diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,62 @@
 
 ## [Unreleased]
 
+## 0.18.0.0 — 2026-09-20
+
+### Breaking Changes
+
+- The public ID declaration and resolved nominal ASTs carry an `IdAdmission`.
+  `LanguageFeature` and `RuntimeCapability` gain the Language 6 explicit-ID
+  admission constructors. Exhaustive matches and positional construction must
+  handle the new fields and constructors.
+- The checked value mappings widen the public grammar and resolved ASTs.
+  `TypeExpr` gains `TDay` and `TTextSet`; `MappedShape` gains `ShapeBare` and
+  `ShapeRefined`; the new `RefinedWirePolicy` type is exported from
+  `Keiro.Dsl.Grammar` alongside matching constructors on the resolved type,
+  expression, and requirement vocabularies (`RBare`, `RRefined`, `RDay`,
+  `RTextSet`, `ExprDay`, `ExprTextSet`, `ReqDay`, `ReqSet`, `ReqByteString`,
+  `MappedRefined`, `MCRefinedPolicy`). `LanguageFeature` and
+  `RuntimeCapability` each gain one constructor per mapping family. Exhaustive
+  matches over any of these types must be extended.
+
+### New Features
+
+- Candidate Language 6 ID declarations accept
+  `domain=typeid-v5-or-v7`. The selected domain propagates through direct and
+  nested aggregate fields, structural and keyed-map codecs, workqueues,
+  read-model query types, router identities, and declared public-contract
+  fields. Omitting the option keeps the released TypeID-v7 behavior.
+- Admission changes now alter direct and nested fold/replay identity, raise a
+  direction-specific `IdDomainContractChanged` finding, and are always reported
+  replay-affected. The generated conformance corpus includes committed UUIDv5
+  and UUIDv7 history with serialized forward/replay equality.
+- Candidate Language 6 adds four checked value mapping families. Each lowers to
+  a frozen `keiro-core` wire policy rather than a consumer validation callback,
+  so the schema authority and the binding stay total:
+  - **Bare containers** — a `mapped structural value` declaration may name a
+    container shape directly, as in `wire Optional Text`, `wire List Text`, or
+    `wire Map Text Text`. Nullability propagates transitively through nested
+    declarations.
+  - **Calendar days** — `wire Day`, lowered to `Keiro.Codec.CalendarDay`.
+  - **Text sets** — `wire Set Text`, lowered to `Keiro.Codec.TextSet`.
+  - **Refined base16 bytes** — the new `mapped refined` declaration with
+    `wire base16-bytes`, lowered to `Keiro.Codec.Base16Bytes`.
+
+  Each family reports its own runtime capability, carries generated
+  conformance coverage with committed replay history, and is inert for a spec
+  that does not use it. Language 6 remains a candidate contract; released
+  Language 5 specs are unaffected.
+- A root `Optional` mapped event field accepts an omitted key and decodes it
+  exactly as an explicit `null`, matching what historical Aeson decoding always
+  did for such a field. Non-optional mapped roots remain strict and still reject
+  omission.
+
+### Other Changes
+
+- Every generated artifact is restamped with the `0.18.0.0` provenance banner.
+  The stamp is recognized for any released version, so a consumer's existing
+  generated tree keeps compiling and only changes on its next scaffold run.
+
 ## 0.17.0.0 — 2026-09-17
 
 ### 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.17.0.0
+version: 0.18.0.0
 synopsis: Typed specification toolchain for keiro services
 description:
   keiro-dsl is the toolchain over a typed `.keiro` specification of a keiro
@@ -189,7 +189,7 @@
     directory >=1.3 && <1.4,
     filepath >=1.4 && <1.6,
     keiki >=0.9 && <0.10,
-    keiro-core ^>=0.17.0.0,
+    keiro-core ^>=0.18.0.0,
     keiro-dsl:generated-haskell-language-internal,
     megaparsec >=9.6 && <9.9,
     mmzk-typeid >=0.7 && <0.8,
@@ -237,12 +237,13 @@
     filepath >=1.4 && <1.6,
     hspec >=2.11,
     keiki >=0.9 && <0.10,
-    keiro-core ^>=0.17.0.0,
+    keiro-core ^>=0.18.0.0,
     keiro-dsl,
     keiro-dsl:generated-haskell-language-internal,
     mmzk-typeid >=0.7 && <0.8,
     process >=1.6 && <1.7,
     text >=2.1 && <2.2,
+    time >=1.12 && <1.15,
 
 test-suite keiro-dsl-import-planning-test
   import: warnings, shared
@@ -289,7 +290,7 @@
   main-is: Main.hs
   build-depends:
     base >=4.21 && <5,
-    keiro ^>=0.17.0.0,
+    keiro ^>=0.18.0.0,
     keiro-dsl,
     shibuya-core ^>=0.9.0.0,
     text >=2.1 && <2.2,
@@ -659,6 +660,228 @@
     shibuya-core,
     text >=2.1 && <2.2,
 
+-- Plan 290 / IR-42: checked named Optional, List, and text-keyed Map values
+-- retain their direct JSON forms across aggregate, queue, and query surfaces.
+test-suite keiro-dsl-conformance-bare-containers
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-bare-containers
+  main-is: Main.hs
+  other-modules:
+    BareContainers.BareLookup.ReadModelHoles
+    BareContainers.BareStore.BehaviorHoles
+    BareContainers.ProjectionCatalog.ProjectionCatalogHoles
+    Conformance.BareContainers.Bindings
+    Conformance.BareContainers.Domain
+    Conformance.BareContainers.Historical
+    Generated.BareContainers.BareJobs.Queue
+    Generated.BareContainers.BareJobs.QueueCodec
+    Generated.BareContainers.BareJobs.QueuePolicy
+    Generated.BareContainers.BareLookup.QueryContract
+    Generated.BareContainers.BareLookup.ReadModel
+    Generated.BareContainers.BareLookup.ReadModelHarness
+    Generated.BareContainers.BareLookup.ReadModelTable
+    Generated.BareContainers.BareStore.BehaviorContract
+    Generated.BareContainers.BareStore.Codec
+    Generated.BareContainers.BareStore.Domain
+    Generated.BareContainers.BareStore.EventStream
+    Generated.BareContainers.BareStore.Harness
+    Generated.BareContainers.BareStore.Projection
+    Generated.BareContainers.BareStore.Transducer
+    Generated.BareContainers.BehaviorSourceMap
+    Generated.BareContainers.Nominals
+    Generated.BareContainers.Nominals.Internal
+    Generated.BareContainers.ProjectionCatalog
+    Generated.BareContainers.ReplayAudit
+    Generated.BareContainers.Structural.CodecCompare.MaybeText
+    Generated.BareContainers.Structural.NominalLeaves
+    Generated.BareContainers.Structural.Shape.BareEnvelope
+    Generated.BareContainers.Structural.Shape.MaybeText
+    Generated.BareContainers.Structural.Shape.NestedIds
+    Generated.BareContainers.Structural.Shape.TextList
+    Generated.BareContainers.Structural.Shape.TextMap
+    Generated.BareContainers.StructuralConformance
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    containers >=0.6 && <0.8,
+    directory >=1.3 && <1.4,
+    effectful-core,
+    filepath >=1.4 && <1.6,
+    hasql-transaction,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    kiroku-store,
+    text >=2.1 && <2.2,
+
+-- Plan 291 / IR-43: frozen full-carrier calendar-day mappings preserve their
+-- canonical bytes across aggregate replay, queue, query, and historical codecs.
+test-suite keiro-dsl-conformance-calendar-days
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-calendar-days
+  main-is: Main.hs
+  other-modules:
+    CalendarDays.CalendarLookup.ReadModelHoles
+    CalendarDays.CalendarStore.BehaviorHoles
+    CalendarDays.ProjectionCatalog.ProjectionCatalogHoles
+    Conformance.CalendarDays.Bindings
+    Conformance.CalendarDays.Domain
+    Conformance.CalendarDays.Historical
+    Generated.CalendarDays.BehaviorSourceMap
+    Generated.CalendarDays.CalendarJobs.Queue
+    Generated.CalendarDays.CalendarJobs.QueueCodec
+    Generated.CalendarDays.CalendarJobs.QueuePolicy
+    Generated.CalendarDays.CalendarLookup.QueryContract
+    Generated.CalendarDays.CalendarLookup.ReadModel
+    Generated.CalendarDays.CalendarLookup.ReadModelHarness
+    Generated.CalendarDays.CalendarLookup.ReadModelTable
+    Generated.CalendarDays.CalendarStore.BehaviorContract
+    Generated.CalendarDays.CalendarStore.Codec
+    Generated.CalendarDays.CalendarStore.Domain
+    Generated.CalendarDays.CalendarStore.EventStream
+    Generated.CalendarDays.CalendarStore.Harness
+    Generated.CalendarDays.CalendarStore.Projection
+    Generated.CalendarDays.CalendarStore.Transducer
+    Generated.CalendarDays.ProjectionCatalog
+    Generated.CalendarDays.ReplayAudit
+    Generated.CalendarDays.Structural.CodecCompare.MaybeLocalDay
+    Generated.CalendarDays.Structural.Shape.CalendarEnvelope
+    Generated.CalendarDays.Structural.Shape.LocalDay
+    Generated.CalendarDays.Structural.Shape.MaybeLocalDay
+    Generated.CalendarDays.StructuralConformance
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    containers >=0.6 && <0.8,
+    directory >=1.3 && <1.4,
+    effectful-core,
+    filepath >=1.4 && <1.6,
+    hasql-transaction,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    kiroku-store,
+    text >=2.1 && <2.2,
+    time >=1.12 && <1.15,
+
+-- Plan 292 / IR-44: checked structural text sets normalize duplicates and
+-- permutations before aggregate execution and replay.
+test-suite keiro-dsl-conformance-structural-text-sets
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-structural-text-sets
+  main-is: Main.hs
+  other-modules:
+    Conformance.StructuralTextSets.Bindings
+    Conformance.StructuralTextSets.Domain
+    Conformance.StructuralTextSets.Historical
+    Generated.StructuralTextSets.BehaviorSourceMap
+    Generated.StructuralTextSets.LabelJobs.Queue
+    Generated.StructuralTextSets.LabelJobs.QueueCodec
+    Generated.StructuralTextSets.LabelJobs.QueuePolicy
+    Generated.StructuralTextSets.LabelLookup.QueryContract
+    Generated.StructuralTextSets.LabelLookup.ReadModel
+    Generated.StructuralTextSets.LabelLookup.ReadModelHarness
+    Generated.StructuralTextSets.LabelLookup.ReadModelTable
+    Generated.StructuralTextSets.LabelStore.BehaviorContract
+    Generated.StructuralTextSets.LabelStore.Codec
+    Generated.StructuralTextSets.LabelStore.Domain
+    Generated.StructuralTextSets.LabelStore.EventStream
+    Generated.StructuralTextSets.LabelStore.Harness
+    Generated.StructuralTextSets.LabelStore.Projection
+    Generated.StructuralTextSets.LabelStore.Transducer
+    Generated.StructuralTextSets.ProjectionCatalog
+    Generated.StructuralTextSets.ReplayAudit
+    Generated.StructuralTextSets.Structural.Shape.LabelEnvelope
+    Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels
+    Generated.StructuralTextSets.Structural.Shape.TextLabels
+    Generated.StructuralTextSets.StructuralConformance
+    StructuralTextSets.LabelLookup.ReadModelHoles
+    StructuralTextSets.LabelStore.BehaviorHoles
+    StructuralTextSets.ProjectionCatalog.ProjectionCatalogHoles
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    containers >=0.6 && <0.8,
+    effectful-core,
+    hasql-transaction,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    keiro-test-support,
+    kiroku-store,
+    text >=2.1 && <2.2,
+
+-- Plan 293 / IR-45: refined base16 bytes validate before total consumer
+-- bindings while preserving decoded bytes across normalization and replay.
+test-suite keiro-dsl-conformance-refined-base16
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-refined-base16
+  main-is: Main.hs
+  other-modules:
+    Conformance.RefinedBase16.Bindings
+    Conformance.RefinedBase16.Domain
+    Conformance.RefinedBase16.Historical
+    Generated.RefinedBase16.BehaviorSourceMap
+    Generated.RefinedBase16.HashJobs.Queue
+    Generated.RefinedBase16.HashJobs.QueueCodec
+    Generated.RefinedBase16.HashJobs.QueuePolicy
+    Generated.RefinedBase16.HashLookup.QueryContract
+    Generated.RefinedBase16.HashLookup.ReadModel
+    Generated.RefinedBase16.HashLookup.ReadModelHarness
+    Generated.RefinedBase16.HashLookup.ReadModelTable
+    Generated.RefinedBase16.HashStore.BehaviorContract
+    Generated.RefinedBase16.HashStore.Codec
+    Generated.RefinedBase16.HashStore.Domain
+    Generated.RefinedBase16.HashStore.EventStream
+    Generated.RefinedBase16.HashStore.Harness
+    Generated.RefinedBase16.HashStore.Projection
+    Generated.RefinedBase16.HashStore.Transducer
+    Generated.RefinedBase16.ProjectionCatalog
+    Generated.RefinedBase16.ReplayAudit
+    Generated.RefinedBase16.Structural.CodecCompare.ContentHash
+    Generated.RefinedBase16.Structural.Shape.ContentHash
+    Generated.RefinedBase16.Structural.Shape.HashEnvelope
+    Generated.RefinedBase16.Structural.Shape.MaybeContentHash
+    Generated.RefinedBase16.StructuralConformance
+    RefinedBase16.HashLookup.ReadModelHoles
+    RefinedBase16.HashStore.BehaviorHoles
+    RefinedBase16.ProjectionCatalog.ProjectionCatalogHoles
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    bytestring,
+    containers >=0.6 && <0.8,
+    directory >=1.3 && <1.4,
+    effectful-core,
+    filepath >=1.4 && <1.6,
+    hasql-transaction,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    keiro-test-support,
+    kiroku-store,
+    text >=2.1 && <2.2,
+
 -- Plan 224: candidate language-5 mapped workqueue payloads share structural
 -- codec authority while preserving the queue schema-version-1 envelope.
 test-suite keiro-dsl-conformance-mapped-queue
@@ -846,7 +1069,7 @@
     containers >=0.6 && <0.8,
     deepseq >=1.5 && <1.6,
     keiki >=0.9 && <0.10,
-    keiro ^>=0.17.0.0,
+    keiro ^>=0.18.0.0,
     tasty-bench >=0.5 && <0.6,
     text >=2.1 && <2.2,
     time >=1.12 && <1.15,
@@ -1795,3 +2018,123 @@
     keiki >=0.9 && <0.10,
     keiro-core,
     text >=2.1 && <2.2,
+
+-- Plan 294 / IR-46: explicit UUIDv5-or-v7 admission remains exact across
+-- aggregate, structural, keyed-map, queue, and public-contract boundaries.
+test-suite keiro-dsl-conformance-id-admission-domains
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-id-admission-domains
+  main-is: Main.hs
+  other-modules:
+    Conformance.IdAdmissionDomains.Bindings
+    Conformance.IdAdmissionDomains.Domain
+    Generated.IdAdmissionDomains.BehaviorSourceMap
+    Generated.IdAdmissionDomains.Identities.Contract
+    Generated.IdAdmissionDomains.IdentityLedger.BehaviorContract
+    Generated.IdAdmissionDomains.IdentityLedger.Codec
+    Generated.IdAdmissionDomains.IdentityLedger.Domain
+    Generated.IdAdmissionDomains.IdentityLedger.EventStream
+    Generated.IdAdmissionDomains.IdentityLedger.Harness
+    Generated.IdAdmissionDomains.IdentityLedger.Projection
+    Generated.IdAdmissionDomains.IdentityLedger.Transducer
+    Generated.IdAdmissionDomains.IdentityWork.Queue
+    Generated.IdAdmissionDomains.IdentityWork.QueueCodec
+    Generated.IdAdmissionDomains.IdentityWork.QueuePolicy
+    Generated.IdAdmissionDomains.Nominals
+    Generated.IdAdmissionDomains.Nominals.Internal
+    Generated.IdAdmissionDomains.ReplayAudit
+    Generated.IdAdmissionDomains.Structural.NominalLeaves
+    Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope
+    Generated.IdAdmissionDomains.StructuralConformance
+    Generated.IdAdmissionDomains.StructuralProjections
+    IdAdmissionDomains.IdentityLedger.BehaviorHoles
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    containers >=0.6 && <0.8,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    mmzk-typeid >=0.7 && <0.8,
+    text >=2.1 && <2.2,
+
+-- Plan 295: integrated retained-history rehearsal for the checked mappings
+-- introduced by Plans 290-294, including replay-evidence mutation detection.
+test-suite keiro-dsl-conformance-checked-mapping-replay
+  import: warnings, generated-output
+  type: exitcode-stdio-1.0
+  default-extensions: OverloadedLabels
+  hs-source-dirs: test/conformance-checked-mapping-replay
+  main-is: Main.hs
+  other-modules:
+    CheckedMappingReplay.ProjectionCatalog.ProjectionCatalogHoles
+    CheckedMappingReplay.ReplayLedger.BehaviorHoles
+    CheckedMappingReplay.ReplayLookup.ReadModelHoles
+    CheckedMappingReplay.ReplayReaction.ProcessHoles
+    CheckedMappingReplay.ReplayTarget.BehaviorHoles
+    Conformance.CheckedMappingReplay.Bindings
+    Conformance.CheckedMappingReplay.Domain
+    Generated.CheckedMappingReplay.BehaviorSourceMap
+    Generated.CheckedMappingReplay.Nominals
+    Generated.CheckedMappingReplay.Nominals.Internal
+    Generated.CheckedMappingReplay.ProjectionCatalog
+    Generated.CheckedMappingReplay.ReplayAudit
+    Generated.CheckedMappingReplay.ReplayEvents.Contract
+    Generated.CheckedMappingReplay.ReplayJobs.Queue
+    Generated.CheckedMappingReplay.ReplayJobs.QueueCodec
+    Generated.CheckedMappingReplay.ReplayJobs.QueuePolicy
+    Generated.CheckedMappingReplay.ReplayLedger.BehaviorContract
+    Generated.CheckedMappingReplay.ReplayLedger.Codec
+    Generated.CheckedMappingReplay.ReplayLedger.Domain
+    Generated.CheckedMappingReplay.ReplayLedger.EventStream
+    Generated.CheckedMappingReplay.ReplayLedger.Harness
+    Generated.CheckedMappingReplay.ReplayLedger.Projection
+    Generated.CheckedMappingReplay.ReplayLedger.Transducer
+    Generated.CheckedMappingReplay.ReplayLookup.QueryContract
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModel
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModelHarness
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable
+    Generated.CheckedMappingReplay.ReplayReaction.Input
+    Generated.CheckedMappingReplay.ReplayReaction.Process
+    Generated.CheckedMappingReplay.ReplayReaction.ProcessHarness
+    Generated.CheckedMappingReplay.ReplayTarget.BehaviorContract
+    Generated.CheckedMappingReplay.ReplayTarget.Codec
+    Generated.CheckedMappingReplay.ReplayTarget.Domain
+    Generated.CheckedMappingReplay.ReplayTarget.EventStream
+    Generated.CheckedMappingReplay.ReplayTarget.Harness
+    Generated.CheckedMappingReplay.ReplayTarget.Projection
+    Generated.CheckedMappingReplay.ReplayTarget.Transducer
+    Generated.CheckedMappingReplay.Structural.NominalLeaves
+    Generated.CheckedMappingReplay.Structural.Shape.ContentHash
+    Generated.CheckedMappingReplay.Structural.Shape.ImportantDays
+    Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash
+    Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel
+    Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope
+    Generated.CheckedMappingReplay.Structural.Shape.TextLabels
+    Generated.CheckedMappingReplay.StructuralConformance
+    Generated.CheckedMappingReplay.StructuralProjections
+
+  build-depends:
+    aeson >=2.2 && <2.3,
+    base >=4.21 && <5,
+    bytestring >=0.12 && <0.13,
+    containers >=0.6 && <0.8,
+    effectful-core,
+    hasql-transaction,
+    keiki >=0.9 && <0.10,
+    keiro,
+    keiro-core,
+    keiro-dsl,
+    keiro-pgmq,
+    keiro-test-support,
+    kiroku-store,
+    mmzk-typeid >=0.7 && <0.8,
+    shibuya-core,
+    text >=2.1 && <2.2,
+    time >=1.12 && <1.15,
+    uuid >=1.3 && <1.4,
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,1458 +9,1472 @@
 serialized, rendered, CLI, and runtime surfaces for review but does not prove byte
 compatibility. Exact byte claims live in named package-test goldens.
 
-Inventory: 313 record-owning declarations, 1532 fields, 1489 strict fields, and 1396 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:257` | `AggregateHaskellSource` | data | no | `aggregateSourceBuiltin` | `builtin` | `!(Maybe Text)` | `(.builtin)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:258` | `AggregateHaskellSource` | data | no | `aggregateSourceReference` | `reference` | `!(Maybe HaskellReference)` | `(.reference)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:259` | `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)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:94` | `BehaviorExactLocation` | data | yes | `exactSourceColumn` | `sourceColumn` | `!Int` | `(.sourceColumn)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:99` | `BehaviorRequirement` | data | yes | `requirementKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:100` | `BehaviorRequirement` | data | yes | `requirementOrigin` | `origin` | `!RequirementOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:101` | `BehaviorRequirement` | data | yes | `requirementKind` | `kind` | `!ObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:102` | `BehaviorRequirement` | data | yes | `requirementEvidence` | `evidence` | `!EvidenceLevel` | `(.evidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:103` | `BehaviorRequirement` | data | yes | `requirementGuardCoverage` | `guardCoverage` | `!GuardCoverage` | `(.guardCoverage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:104` | `BehaviorRequirement` | data | yes | `requirementContext` | `context` | `!Name` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:105` | `BehaviorRequirement` | data | yes | `requirementAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:106` | `BehaviorRequirement` | data | yes | `requirementSource` | `source` | `!Name` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:107` | `BehaviorRequirement` | data | yes | `requirementCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:108` | `BehaviorRequirement` | data | yes | `requirementTarget` | `target` | `!(Maybe Name)` | `(.target)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:109` | `BehaviorRequirement` | data | yes | `requirementMode` | `mode` | `!(Maybe TransitionMode)` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:110` | `BehaviorRequirement` | data | yes | `requirementEvents` | `events` | `![Name]` | `(.events)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:111` | `BehaviorRequirement` | data | yes | `requirementOutputs` | `outputs` | `![OutputEvidence]` | `(.outputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:112` | `BehaviorRequirement` | data | yes | `requirementDomainOutcome` | `domainOutcome` | `!(Maybe TransitionOutcome)` | `(.domainOutcome)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:113` | `BehaviorRequirement` | data | yes | `requirementLocation` | `location` | `!Loc` | `(.location)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:114` | `BehaviorRequirement` | data | yes | `requirementExactLocation` | `exactLocation` | `!(Maybe BehaviorExactLocation)` | `(.exactLocation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:115` | `BehaviorRequirement` | data | yes | `requirementOwner` | `owner` | `!(Maybe FilePath)` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:116` | `BehaviorRequirement` | data | yes | `requirementCanonical` | `canonical` | `!Text` | `(.canonical)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:124` | `BehaviorRecordRow` | data | yes | `behaviorRecordKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:125` | `BehaviorRecordRow` | data | yes | `behaviorRecordKind` | `kind` | `!ObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:126` | `BehaviorRecordRow` | data | yes | `behaviorRecordEvidence` | `evidence` | `!EvidenceLevel` | `(.evidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:127` | `BehaviorRecordRow` | data | yes | `behaviorRecordAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:128` | `BehaviorRecordRow` | data | yes | `behaviorRecordSource` | `source` | `!Name` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:129` | `BehaviorRecordRow` | data | yes | `behaviorRecordCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:130` | `BehaviorRecordRow` | data | yes | `behaviorRecordOwner` | `owner` | `!(Maybe FilePath)` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:131` | `BehaviorRecordRow` | data | yes | `behaviorRecordOutputs` | `outputs` | `![OutputEvidence]` | `(.outputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:143` | `BehaviorObligationsReport` | data | yes | `behaviorSubject` | `subject` | `!FilePath` | `(.subject)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:144` | `BehaviorObligationsReport` | data | yes | `behaviorWorkspaceService` | `workspaceService` | `!(Maybe Text)` | `(.workspaceService)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:145` | `BehaviorObligationsReport` | data | yes | `behaviorRequirements` | `requirements` | `![BehaviorRequirement]` | `(.requirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:38` | `BehaviorSourceFailure` | data | yes | `failureCode` | `code` | `!BehaviorSourceFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:39` | `BehaviorSourceFailure` | data | yes | `failureKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:40` | `BehaviorSourceFailure` | data | yes | `failureOrigin` | `origin` | `!RequirementOrigin` | `(.origin)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:41` | `BehaviorSourceFailure` | data | yes | `failureAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:42` | `BehaviorSourceFailure` | data | yes | `failureState` | `state` | `!Text` | `(.state)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:43` | `BehaviorSourceFailure` | data | yes | `failureCommand` | `command` | `!Text` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:44` | `BehaviorSourceFailure` | data | yes | `failureSourceSubject` | `sourceSubject` | `!SourceSubject` | `(.sourceSubject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:45` | `BehaviorSourceFailure` | data | yes | `failureSpan` | `span` | `!(Maybe SourceSpan)` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:46` | `BehaviorSourceFailure` | data | yes | `failureMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:51` | `BehaviorSourceEntry` | data | yes | `behaviorSourceKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:52` | `BehaviorSourceEntry` | data | yes | `behaviorSourceFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:53` | `BehaviorSourceEntry` | data | yes | `behaviorSourceLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:54` | `BehaviorSourceEntry` | data | yes | `behaviorSourceColumn` | `column` | `!Int` | `(.column)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:45` | `CheckReportLanguage` | data | yes | `reportSourceForm` | `sourceForm` | `!Text` | `(.sourceForm)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:46` | `CheckReportLanguage` | data | yes | `reportDeclaredLanguageVersion` | `declaredLanguageVersion` | `!(Maybe LanguageVersion)` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:47` | `CheckReportLanguage` | data | yes | `reportEffectiveLanguageVersion` | `effectiveLanguageVersion` | `!LanguageVersion` | `(.effectiveLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:48` | `CheckReportLanguage` | data | yes | `reportRuntimeSemantics` | `runtimeSemantics` | `!Text` | `(.runtimeSemantics)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:49` | `CheckReportLanguage` | data | yes | `reportLanguageSupport` | `languageSupport` | `!LanguageSupport` | `(.languageSupport)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:50` | `CheckReportLanguage` | data | yes | `reportStable` | `stable` | `!Bool` | `(.stable)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:55` | `CheckReportEnforcement` | data | yes | `reportMinLanguage` | `minLanguage` | `!(Maybe LanguageVersion)` | `(.minLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:56` | `CheckReportEnforcement` | data | yes | `reportDenyWarnings` | `denyWarnings` | `!Bool` | `(.denyWarnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:57` | `CheckReportEnforcement` | data | yes | `reportDenyCodes` | `denyCodes` | `![DiagnosticCode]` | `(.denyCodes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:62` | `CheckReportRelated` | data | yes | `relatedFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:63` | `CheckReportRelated` | data | yes | `relatedLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:64` | `CheckReportRelated` | data | yes | `relatedNote` | `note` | `!Text` | `(.note)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:69` | `CheckReportEntry` | data | yes | `entryCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:70` | `CheckReportEntry` | data | yes | `entrySeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:71` | `CheckReportEntry` | data | yes | `entryFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:72` | `CheckReportEntry` | data | yes | `entryLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:73` | `CheckReportEntry` | data | yes | `entryMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:74` | `CheckReportEntry` | data | yes | `entryDenied` | `denied` | `!Bool` | `(.denied)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:75` | `CheckReportEntry` | data | yes | `entryRelated` | `related` | `![CheckReportRelated]` | `(.related)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:80` | `CheckReportSummary` | data | yes | `summaryErrors` | `errors` | `!Int` | `(.errors)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:81` | `CheckReportSummary` | data | yes | `summaryWarnings` | `warnings` | `!Int` | `(.warnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:82` | `CheckReportSummary` | data | yes | `summaryDeniedWarnings` | `deniedWarnings` | `!Int` | `(.deniedWarnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:87` | `CheckReportMember` | data | yes | `memberPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:88` | `CheckReportMember` | data | yes | `memberSourceForm` | `sourceForm` | `!Text` | `(.sourceForm)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:89` | `CheckReportMember` | data | yes | `memberDeclaredLanguageVersion` | `declaredLanguageVersion` | `!(Maybe LanguageVersion)` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:94` | `CheckReportProcessReaction` | data | yes | `process` | `process` | `!Text` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:95` | `CheckReportProcessReaction` | 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/CheckReport.hs:96` | `CheckReportProcessReaction` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:97` | `CheckReportProcessReaction` | data | yes | `fingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:98` | `CheckReportProcessReaction` | 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/CheckReport.hs:106` | `CheckReport` | data | no | `reportKind` | `kind` | `!CheckReportKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:107` | `CheckReport` | data | no | `reportSubject` | `subject` | `!FilePath` | `(.subject)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:111` | `CheckReport` | data | no | `reportLanguage` | `language` | `!(Maybe CheckReportLanguage)` | `(.language)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:112` | `CheckReport` | data | no | `reportEnforcement` | `enforcement` | `!CheckReportEnforcement` | `(.enforcement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:113` | `CheckReport` | data | no | `reportDiagnostics` | `diagnostics` | `![CheckReportEntry]` | `(.diagnostics)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:114` | `CheckReport` | data | no | `reportSummary` | `summary` | `!CheckReportSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:115` | `CheckReport` | data | no | `reportOk` | `ok` | `!Bool` | `(.ok)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:116` | `CheckReport` | data | no | `reportMembers` | `members` | `![CheckReportMember]` | `(.members)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:117` | `CheckReport` | data | no | `processReactions` | `processReactions` | `![CheckReportProcessReaction]` | `(.processReactions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:70` | `JsonPointer` | newtype | yes | `unJsonPointer` | `unJsonPointer` | `Text` | explicit `unJsonPointer` positional function | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:85` | `HistoricalCodec` | data | yes | `hcIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:86` | `HistoricalCodec` | data | yes | `hcVersion` | `version` | `!Text` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:87` | `HistoricalCodec` | data | yes | `hcEncode` | `encode` | `!(a -> Value)` | `(.encode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:88` | `HistoricalCodec` | data | yes | `hcDecode` | `decode` | `!(Value -> Either Text a)` | `(.decode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:93` | `CompareObservation` | data | yes | `coCaseName` | `caseName` | `!Text` | `(.caseName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:94` | `CompareObservation` | data | yes | `coHistoricalValue` | `historicalValue` | `!Value` | `(.historicalValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:95` | `CompareObservation` | data | yes | `coGeneratedValue` | `generatedValue` | `!Value` | `(.generatedValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:98` | `CompareObservation` | data | yes | `coFixturePath` | `fixturePath` | `!FilePath` | `(.fixturePath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:99` | `CompareObservation` | data | yes | `coInputValue` | `inputValue` | `!Value` | `(.inputValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:100` | `CompareObservation` | data | yes | `coHistoricalDecode` | `historicalDecode` | `!DecodeOutcome` | `(.historicalDecode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:101` | `CompareObservation` | data | yes | `coGeneratedDecode` | `generatedDecode` | `!DecodeOutcome` | `(.generatedDecode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:124` | `DeclaredBranch` | data | yes | `dbOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:125` | `DeclaredBranch` | data | yes | `dbPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:126` | `DeclaredBranch` | data | yes | `dbKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:131` | `ObservedBranch` | data | yes | `obOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:132` | `ObservedBranch` | data | yes | `obPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:133` | `ObservedBranch` | data | yes | `obKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:138` | `CoverageGap` | data | yes | `cgOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:139` | `CoverageGap` | data | yes | `cgPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:140` | `CoverageGap` | data | yes | `cgKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:157` | `BranchField` | data | yes | `bfWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:158` | `BranchField` | data | yes | `bfPresenceOptional` | `presenceOptional` | `!Bool` | `(.presenceOptional)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:159` | `BranchField` | data | yes | `bfSchema` | `schema` | `!BranchSchema` | `(.schema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:164` | `BranchArm` | data | yes | `baWireTag` | `wireTag` | `!Text` | `(.wireTag)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:165` | `BranchArm` | data | yes | `baPayloadSchema` | `payloadSchema` | `!(Maybe BranchSchema)` | `(.payloadSchema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:170` | `CompareProvenance` | data | yes | `cpHistoricalCodecIdentity` | `historicalCodecIdentity` | `!Text` | `(.historicalCodecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:171` | `CompareProvenance` | data | yes | `cpHistoricalCodecVersion` | `historicalCodecVersion` | `!Text` | `(.historicalCodecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:172` | `CompareProvenance` | data | yes | `cpCanonicalType` | `canonicalType` | `!CanonicalTypeId` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:173` | `CompareProvenance` | data | yes | `cpBindingSymbol` | `bindingSymbol` | `!QualifiedValueName` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:174` | `CompareProvenance` | data | yes | `cpBindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:175` | `CompareProvenance` | data | yes | `cpWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:180` | `ClassifiedObservation` | data | yes | `classifiedOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:181` | `ClassifiedObservation` | data | yes | `classifiedName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:182` | `ClassifiedObservation` | data | yes | `classifiedVerdict` | `verdict` | `!FixtureVerdict` | `(.verdict)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:187` | `CompareReport` | data | yes | `crProvenance` | `provenance` | `!CompareProvenance` | `(.provenance)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:188` | `CompareReport` | data | yes | `crObservations` | `observations` | `![ClassifiedObservation]` | `(.observations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:189` | `CompareReport` | data | yes | `crInputIssues` | `inputIssues` | `![CompareInputIssue]` | `(.inputIssues)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:190` | `CompareReport` | data | yes | `crCoverageGaps` | `coverageGaps` | `![CoverageGap]` | `(.coverageGaps)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:191` | `CompareReport` | data | yes | `crAuthority` | `authority` | `!Text` | `(.authority)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:196` | `ReportWriteError` | data | yes | `reportWritePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:197` | `ReportWriteError` | data | yes | `reportWriteMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:58` | `ConformanceFile` | data | yes | `conformanceFilePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:59` | `ConformanceFile` | data | yes | `conformanceFileText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:60` | `ConformanceFile` | data | yes | `conformanceFileKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:65` | `ConformancePackagePlan` | data | yes | `cppServiceKey` | `serviceKey` | `!ConformanceServiceKey` | `(.serviceKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:66` | `ConformancePackagePlan` | data | yes | `cppDirectory` | `directory` | `!FilePath` | `(.directory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:67` | `ConformancePackagePlan` | data | yes | `cppPackageName` | `packageName` | `!Text` | `(.packageName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:68` | `ConformancePackagePlan` | data | yes | `cppRuntimePackage` | `runtimePackage` | `!RuntimePackageName` | `(.runtimePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:69` | `ConformancePackagePlan` | data | yes | `cppFacadeModule` | `facadeModule` | `!Text` | `(.facadeModule)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:70` | `ConformancePackagePlan` | data | yes | `cppFiles` | `files` | `![ConformanceFile]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:78` | `DuplicateFactKey` | data | yes | `duplicateFactSide` | `side` | `!ConformanceFactSide` | `(.side)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:79` | `DuplicateFactKey` | data | yes | `duplicateFactKey` | `key` | `!String` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:101` | `ConformancePackageRecord` | data | yes | `cprSchema` | `schema` | `!Int` | `(.schema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:102` | `ConformancePackageRecord` | data | yes | `cprServiceKey` | `serviceKey` | `!ConformanceServiceKey` | `(.serviceKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:103` | `ConformancePackageRecord` | data | yes | `cprRuntimePackage` | `runtimePackage` | `!RuntimePackageName` | `(.runtimePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:104` | `ConformancePackageRecord` | data | yes | `cprFacadeModule` | `facadeModule` | `!Text` | `(.facadeModule)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:105` | `ConformancePackageRecord` | data | yes | `cprFiles` | `files` | `![(ModuleKind, FilePath)]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:113` | `ConformanceStaleFile` | data | yes | `conformanceStaleKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:114` | `ConformanceStaleFile` | data | yes | `conformanceStalePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:115` | `ConformanceStaleFile` | data | yes | `conformanceStaleBannerPresent` | `bannerPresent` | `!(Maybe Bool)` | `(.bannerPresent)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:120` | `PreparedConformancePackage` | data | no | `preparedRoot` | `root` | `!FilePath` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:121` | `PreparedConformancePackage` | data | no | `preparedPlan` | `plan` | `!ConformancePackagePlan` | `(.plan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:122` | `PreparedConformancePackage` | data | no | `preparedStale` | `stale` | `![ConformanceStaleFile]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:127` | `ConformancePackageReport` | data | yes | `conformanceReportRoot` | `root` | `!FilePath` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:128` | `ConformancePackageReport` | data | yes | `conformanceReportPlan` | `plan` | `!ConformancePackagePlan` | `(.plan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:129` | `ConformancePackageReport` | data | yes | `conformanceReportDispositions` | `dispositions` | `![(ConformanceFile, ConformanceWriteDisposition)]` | `(.dispositions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:130` | `ConformancePackageReport` | data | yes | `conformanceReportStale` | `stale` | `![ConformanceStaleFile]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:388` | `ConformanceFileRow` | data | no | `conformanceRowKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:389` | `ConformanceFileRow` | data | no | `conformanceRowPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:27` | `HaskellTypeOccurrence` | newtype | yes | `unHaskellTypeOccurrence` | `unHaskellTypeOccurrence` | `Text` | explicit `unHaskellTypeOccurrence` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:38` | `ImportRequirement` | data | yes | `package` | `package` | `!Text` | `(.package)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:39` | `ImportRequirement` | data | yes | `moduleName` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:40` | `ImportRequirement` | data | yes | `occurrence` | `occurrence` | `!Text` | `(.occurrence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:45` | `ConsumerTypePlan` | data | yes | `haskellType` | `haskellType` | `!HaskellTypeOccurrence` | `(.haskellType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:46` | `ConsumerTypePlan` | data | yes | `imports` | `imports` | `![ImportRequirement]` | `(.imports)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:47` | `ConsumerTypePlan` | data | yes | `dependencies` | `dependencies` | `!(Set MappedKey)` | `(.dependencies)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:48` | `ConsumerTypePlan` | data | yes | `nominalDependencies` | `nominalDependencies` | `!(Set Text)` | `(.nominalDependencies)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:153` | `RenderedType` | data | no | `rendered` | `rendered` | `!Text` | `(.rendered)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:154` | `RenderedType` | data | no | `precedence` | `precedence` | `!TypePrecedence` | `(.precedence)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:155` | `RenderedType` | data | no | `requirements` | `requirements` | `!(Set ImportRequirement)` | `(.requirements)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:156` | `RenderedType` | data | no | `mappedDependencies` | `mappedDependencies` | `!(Set MappedKey)` | `(.mappedDependencies)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:157` | `RenderedType` | data | no | `nominalDependencies` | `nominalDependencies` | `!(Set Text)` | `(.nominalDependencies)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:67` | `RouterSelectionSnapshot` | data | yes | `selectionRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:68` | `RouterSelectionSnapshot` | data | yes | `selectionVerification` | `verification` | `!SelectionVerification` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:69` | `RouterSelectionSnapshot` | data | yes | `selectionIdentity` | `identity` | `!(Maybe Text)` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:70` | `RouterSelectionSnapshot` | data | yes | `selectionVersion` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:71` | `RouterSelectionSnapshot` | data | yes | `selectionFingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:76` | `CoordinationImpact` | data | yes | `coordinationRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:77` | `CoordinationImpact` | data | yes | `coordinationSeverity` | `severity` | `!CoordinationSeverity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:78` | `CoordinationImpact` | data | yes | `coordinationReason` | `reason` | `!CoordinationReason` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:79` | `CoordinationImpact` | data | yes | `previousVerification` | `previousVerification` | `!SelectionVerification` | `(.previousVerification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:80` | `CoordinationImpact` | data | yes | `currentVerification` | `currentVerification` | `!SelectionVerification` | `(.currentVerification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:81` | `CoordinationImpact` | data | yes | `previousIdentity` | `previousIdentity` | `!(Maybe Text)` | `(.previousIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:82` | `CoordinationImpact` | data | yes | `currentIdentity` | `currentIdentity` | `!(Maybe Text)` | `(.currentIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:83` | `CoordinationImpact` | data | yes | `previousVersion` | `previousVersion` | `!(Maybe Natural)` | `(.previousVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:84` | `CoordinationImpact` | data | yes | `currentVersion` | `currentVersion` | `!(Maybe Natural)` | `(.currentVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:85` | `CoordinationImpact` | data | yes | `previousFingerprint` | `previousFingerprint` | `!(Maybe Text)` | `(.previousFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:86` | `CoordinationImpact` | data | yes | `currentFingerprint` | `currentFingerprint` | `!(Maybe Text)` | `(.currentFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:87` | `CoordinationImpact` | data | yes | `affectedUseSites` | `affectedUseSites` | `![UseSite]` | `(.affectedUseSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:92` | `RouterSelectionDrift` | data | yes | `driftRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:93` | `RouterSelectionDrift` | data | yes | `driftPreviousSelection` | `previousSelection` | `!(Maybe RouterSelectionSnapshot)` | `(.previousSelection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:94` | `RouterSelectionDrift` | data | yes | `driftCurrentSelection` | `currentSelection` | `!(Maybe RouterSelectionSnapshot)` | `(.currentSelection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:102` | `ProcessReactionSnapshot` | data | yes | `process` | `process` | `!Name` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:103` | `ProcessReactionSnapshot` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:104` | `ProcessReactionSnapshot` | data | yes | `version` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:105` | `ProcessReactionSnapshot` | data | yes | `fingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:110` | `ProcessReactionDrift` | data | yes | `process` | `process` | `!Name` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:111` | `ProcessReactionDrift` | data | yes | `previousReaction` | `previousReaction` | `!(Maybe ProcessReactionSnapshot)` | `(.previousReaction)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:112` | `ProcessReactionDrift` | data | yes | `currentReaction` | `currentReaction` | `!(Maybe ProcessReactionSnapshot)` | `(.currentReaction)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:302` | `RouterSelectionState` | data | no | `stateSnapshot` | `snapshot` | `!RouterSelectionSnapshot` | `(.snapshot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:303` | `RouterSelectionState` | data | no | `stateUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:67` | `CoverageRoot` | data | yes | `rootSurface` | `surface` | `!CoverageSurface` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:68` | `CoverageRoot` | data | yes | `rootConsumer` | `consumer` | `!Text` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:69` | `CoverageRoot` | data | yes | `rootPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:70` | `CoverageRoot` | data | yes | `rootMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:71` | `CoverageRoot` | data | yes | `rootMode` | `mode` | `!CoverageMode` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:72` | `CoverageRoot` | data | yes | `rootCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:73` | `CoverageRoot` | data | yes | `rootCodecIdentity` | `codecIdentity` | `!(Maybe Text)` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:74` | `CoverageRoot` | data | yes | `rootCodecVersion` | `codecVersion` | `!(Maybe Text)` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:75` | `CoverageRoot` | data | yes | `rootWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:80` | `StructuralBoundary` | data | yes | `structuralRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:81` | `StructuralBoundary` | data | yes | `structuralPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:82` | `StructuralBoundary` | data | yes | `structuralMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:83` | `StructuralBoundary` | data | yes | `structuralCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:84` | `StructuralBoundary` | data | yes | `structuralWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:89` | `OpaqueBoundary` | data | yes | `opaqueRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:90` | `OpaqueBoundary` | data | yes | `opaquePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:91` | `OpaqueBoundary` | data | yes | `opaqueMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:92` | `OpaqueBoundary` | data | yes | `opaqueCodecIdentity` | `codecIdentity` | `!Text` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:93` | `OpaqueBoundary` | data | yes | `opaqueCodecVersion` | `codecVersion` | `!Text` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:98` | `JsonBoundary` | data | yes | `jsonSurface` | `surface` | `!CoverageSurface` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:99` | `JsonBoundary` | data | yes | `jsonRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:100` | `JsonBoundary` | data | yes | `jsonPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:105` | `NominalBoundary` | data | yes | `root` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:106` | `NominalBoundary` | data | yes | `path` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:107` | `NominalBoundary` | data | yes | `position` | `position` | `!Text` | `(.position)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:108` | `NominalBoundary` | data | yes | `nominal` | `nominal` | `!Text` | `(.nominal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:109` | `NominalBoundary` | data | yes | `kind` | `kind` | `!Text` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:110` | `NominalBoundary` | data | yes | `prefix` | `prefix` | `!(Maybe Text)` | `(.prefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:111` | `NominalBoundary` | data | yes | `domainVersion` | `domainVersion` | `!(Maybe Text)` | `(.domainVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:112` | `NominalBoundary` | data | yes | `canonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:113` | `NominalBoundary` | data | yes | `ownership` | `ownership` | `!Text` | `(.ownership)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:118` | `SnapshotBoundary` | data | yes | `snapshotRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:119` | `SnapshotBoundary` | data | yes | `snapshotAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:120` | `SnapshotBoundary` | data | yes | `snapshotRegister` | `register` | `!Text` | `(.register)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:121` | `SnapshotBoundary` | data | yes | `snapshotMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:122` | `SnapshotBoundary` | data | yes | `snapshotMode` | `mode` | `!CoverageMode` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:123` | `SnapshotBoundary` | data | yes | `snapshotEncoding` | `encoding` | `!Text` | `(.encoding)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:124` | `SnapshotBoundary` | data | yes | `snapshotInvalidation` | `invalidation` | `!Text` | `(.invalidation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:125` | `SnapshotBoundary` | data | yes | `snapshotWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:126` | `SnapshotBoundary` | data | yes | `snapshotEnabled` | `enabled` | `!Bool` | `(.enabled)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:131` | `UnsupportedSurface` | data | yes | `unsupportedSurface` | `surface` | `!Text` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:132` | `UnsupportedSurface` | data | yes | `unsupportedSupport` | `support` | `!Text` | `(.support)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:133` | `UnsupportedSurface` | data | yes | `unsupportedReason` | `reason` | `!Text` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:138` | `CoverageCounts` | data | yes | `totalRoots` | `totalRoots` | `!Int` | `(.totalRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:139` | `CoverageCounts` | data | yes | `structuralRoots` | `structuralRoots` | `!Int` | `(.structuralRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:140` | `CoverageCounts` | data | yes | `opaqueRoots` | `opaqueRoots` | `!Int` | `(.opaqueRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:141` | `CoverageCounts` | data | yes | `jsonBoundaries` | `jsonBoundaries` | `!Int` | `(.jsonBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:146` | `CoverageSummary` | data | yes | `aggregateCommandPayloads` | `aggregateCommandPayloads` | `!CoverageCounts` | `(.aggregateCommandPayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:147` | `CoverageSummary` | data | yes | `privateEventPayloads` | `privateEventPayloads` | `!CoverageCounts` | `(.privateEventPayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:148` | `CoverageSummary` | data | yes | `snapshotRegisters` | `snapshotRegisters` | `!CoverageCounts` | `(.snapshotRegisters)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:149` | `CoverageSummary` | data | yes | `workqueuePayloads` | `workqueuePayloads` | `!CoverageCounts` | `(.workqueuePayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:150` | `CoverageSummary` | data | yes | `readModelQueryInputs` | `readModelQueryInputs` | `!CoverageCounts` | `(.readModelQueryInputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:151` | `CoverageSummary` | data | yes | `readModelQueryResults` | `readModelQueryResults` | `!CoverageCounts` | `(.readModelQueryResults)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:152` | `CoverageSummary` | data | yes | `projectionTypedConsumers` | `projectionTypedConsumers` | `!CoverageCounts` | `(.projectionTypedConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:157` | `CoverageFinding` | data | yes | `findingSeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:158` | `CoverageFinding` | data | yes | `findingCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:159` | `CoverageFinding` | data | yes | `findingRoots` | `roots` | `![Text]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:160` | `CoverageFinding` | data | yes | `findingMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:165` | `CoveragePrevious` | data | yes | `previousReference` | `reference` | `!Text` | `(.reference)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:166` | `CoveragePrevious` | data | yes | `previousSummary` | `summary` | `!CoverageSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:167` | `CoveragePrevious` | data | yes | `previousOpaqueBoundaries` | `opaqueBoundaries` | `![OpaqueBoundary]` | `(.opaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:172` | `CoverageDelta` | data | yes | `aggregateCommandRootDelta` | `aggregateCommandRootDelta` | `!Int` | `(.aggregateCommandRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:173` | `CoverageDelta` | data | yes | `privateEventRootDelta` | `privateEventRootDelta` | `!Int` | `(.privateEventRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:174` | `CoverageDelta` | data | yes | `snapshotRegisterRootDelta` | `snapshotRegisterRootDelta` | `!Int` | `(.snapshotRegisterRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:175` | `CoverageDelta` | data | yes | `workqueuePayloadRootDelta` | `workqueuePayloadRootDelta` | `!Int` | `(.workqueuePayloadRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:176` | `CoverageDelta` | data | yes | `readModelQueryInputRootDelta` | `readModelQueryInputRootDelta` | `!Int` | `(.readModelQueryInputRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:177` | `CoverageDelta` | data | yes | `readModelQueryResultRootDelta` | `readModelQueryResultRootDelta` | `!Int` | `(.readModelQueryResultRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:178` | `CoverageDelta` | data | yes | `projectionTypedConsumerRootDelta` | `projectionTypedConsumerRootDelta` | `!Int` | `(.projectionTypedConsumerRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:179` | `CoverageDelta` | data | yes | `opaqueBoundaryDelta` | `opaqueBoundaryDelta` | `!Int` | `(.opaqueBoundaryDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:180` | `CoverageDelta` | data | yes | `addedOpaqueBoundaries` | `addedOpaqueBoundaries` | `![OpaqueBoundary]` | `(.addedOpaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:181` | `CoverageDelta` | data | yes | `removedOpaqueBoundaries` | `removedOpaqueBoundaries` | `![OpaqueBoundary]` | `(.removedOpaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:186` | `CoverageReport` | data | yes | `coverageSpec` | `spec` | `!FilePath` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:187` | `CoverageReport` | data | yes | `coverageRoots` | `roots` | `![CoverageRoot]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:188` | `CoverageReport` | data | yes | `coverageStructuralBoundaries` | `structuralBoundaries` | `![StructuralBoundary]` | `(.structuralBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:189` | `CoverageReport` | data | yes | `coverageOpaqueBoundaries` | `opaqueBoundaries` | `![OpaqueBoundary]` | `(.opaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:190` | `CoverageReport` | data | yes | `coverageJsonBoundaries` | `jsonBoundaries` | `![JsonBoundary]` | `(.jsonBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:191` | `CoverageReport` | data | yes | `nominalBoundaries` | `nominalBoundaries` | `![NominalBoundary]` | `(.nominalBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:192` | `CoverageReport` | data | yes | `coverageSnapshotBoundaries` | `snapshotBoundaries` | `![SnapshotBoundary]` | `(.snapshotBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:193` | `CoverageReport` | data | yes | `coverageUnsupportedSurfaces` | `unsupportedSurfaces` | `![UnsupportedSurface]` | `(.unsupportedSurfaces)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:194` | `CoverageReport` | data | yes | `coverageSummary` | `summary` | `!CoverageSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:195` | `CoverageReport` | data | yes | `coverageFindings` | `findings` | `![CoverageFinding]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:196` | `CoverageReport` | data | yes | `coveragePrevious` | `previous` | `!(Maybe CoveragePrevious)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:197` | `CoverageReport` | data | yes | `coverageDelta` | `delta` | `!(Maybe CoverageDelta)` | `(.delta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:143` | `CompatibilityVector` | data | yes | `cvPrivateHistoryRead` | `privateHistoryRead` | `!SurfaceVerdict` | `(.privateHistoryRead)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:144` | `CompatibilityVector` | data | yes | `cvOldBinaryReadNewEvents` | `oldBinaryReadNewEvents` | `!SurfaceVerdict` | `(.oldBinaryReadNewEvents)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:145` | `CompatibilityVector` | data | yes | `cvSnapshotHydration` | `snapshotHydration` | `!SurfaceVerdict` | `(.snapshotHydration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:146` | `CompatibilityVector` | data | yes | `cvPublicConsumer` | `publicConsumer` | `!SurfaceVerdict` | `(.publicConsumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:147` | `CompatibilityVector` | data | yes | `cvPersistedIdentity` | `persistedIdentity` | `!SurfaceVerdict` | `(.persistedIdentity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:148` | `CompatibilityVector` | data | yes | `cvConsumerBuild` | `consumerBuild` | `!SurfaceVerdict` | `(.consumerBuild)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:149` | `CompatibilityVector` | data | yes | `cvRollout` | `rollout` | `!(Set RolloutConstraint)` | `(.rollout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:162` | `MappedPersistedImpact` | data | yes | `mappedPersistedSurface` | `surface` | `!MappedPersistedSurface` | `(.surface)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:163` | `MappedPersistedImpact` | data | yes | `mappedPersistedVerdict` | `verdict` | `!SurfaceVerdict` | `(.verdict)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:181` | `ChangeContext` | data | no | `changeContextRoot` | `root` | `!Name` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:182` | `ChangeContext` | data | no | `changeContextPaths` | `paths` | `![Text]` | `(.paths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:183` | `ChangeContext` | data | no | `contextKind` | `contextKind` | `!ContextKind` | `(.contextKind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:184` | `ChangeContext` | data | no | `contextOriginalLabel` | `contextOriginalLabel` | `!Label` | `(.contextOriginalLabel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:195` | `ChangeKind` | data | yes | `ckNode` | `node` | `!Name` | `(.node)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:196` | `ChangeKind` | data | yes | `ckFacet` | `facet` | `!Text` | `(.facet)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:197` | `ChangeKind` | data | yes | `ckSubject` | `subject` | `!Text` | `(.subject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:198` | `ChangeKind` | data | yes | `ckCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:199` | `ChangeKind` | data | yes | `ckContext` | `context` | `!ChangeContext` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:200` | `ChangeKind` | data | yes | `ckVector` | `vector` | `!CompatibilityVector` | `(.vector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:201` | `ChangeKind` | data | yes | `ckMappedPersistedImpact` | `mappedPersistedImpact` | `!(Maybe MappedPersistedImpact)` | `(.mappedPersistedImpact)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:202` | `ChangeKind` | data | yes | `ckMappedConsequences` | `mappedConsequences` | `!(Set MappedConsequence)` | `(.mappedConsequences)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:203` | `ChangeKind` | data | yes | `ckPaths` | `paths` | `![Text]` | `(.paths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:204` | `ChangeKind` | data | yes | `ckDetail` | `detail` | `!Text` | `(.detail)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:708` | `DiffEnv` | data | yes | `deOld` | `old` | `!Spec` | `(.old)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:709` | `DiffEnv` | data | yes | `deNew` | `new` | `!Spec` | `(.new)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:710` | `DiffEnv` | data | yes | `oldService` | `oldService` | `!CheckedService` | `(.oldService)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:711` | `DiffEnv` | data | yes | `newService` | `newService` | `!CheckedService` | `(.newService)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:712` | `DiffEnv` | data | yes | `newValidationErrors` | `newValidationErrors` | `![Diagnostic]` | `(.newValidationErrors)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:764` | `Paired` | data | yes | `prMatched` | `matched` | `![(n, n)]` | `(.matched)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:765` | `Paired` | data | yes | `prAdded` | `added` | `![n]` | `(.added)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:766` | `Paired` | data | yes | `prRemoved` | `removed` | `![n]` | `(.removed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:1803` | `GuardProposal` | data | no | `proposalBody` | `body` | `!ReplayBodyDelta` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:1804` | `GuardProposal` | data | no | `proposalTwin` | `twin` | `!Transition` | `(.twin)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2193` | `EventFieldSig` | data | no | `eventFieldDslName` | `dslName` | `!Name` | `(.dslName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2194` | `EventFieldSig` | data | no | `eventFieldSelector` | `selector` | `!Name` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2195` | `EventFieldSig` | data | no | `eventFieldWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2196` | `EventFieldSig` | data | no | `eventFieldType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:74` | `DiffReport` | data | no | `reportGate` | `gate` | `!(Set CompatibilitySurface)` | `(.gate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:75` | `DiffReport` | data | no | `reportFindings` | `findings` | `![Change]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:76` | `DiffReport` | data | no | `reportSemanticImpact` | `semanticImpact` | `!(Maybe [MappedImpactDelta])` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:77` | `DiffReport` | data | no | `reportCoordinationImpact` | `coordinationImpact` | `!(Maybe [CoordinationImpact])` | `(.coordinationImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:97` | `OwnedSite` | data | yes | `osFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:98` | `OwnedSite` | data | yes | `osLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:104` | `WorkspaceChange` | data | yes | `wcChange` | `change` | `!Change` | `(.change)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:105` | `WorkspaceChange` | data | yes | `wcDeclarationSite` | `declarationSite` | `!(Maybe OwnedSite)` | `(.declarationSite)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:106` | `WorkspaceChange` | data | yes | `wcUseSites` | `useSites` | `![(Text, Maybe OwnedSite)]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:112` | `WorkspaceMeta` | data | yes | `wmIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:113` | `WorkspaceMeta` | data | yes | `wmManifest` | `manifest` | `!FilePath` | `(.manifest)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:114` | `WorkspaceMeta` | data | yes | `wmSince` | `since` | `!Text` | `(.since)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:115` | `WorkspaceMeta` | data | yes | `wmMembersOld` | `membersOld` | `![FilePath]` | `(.membersOld)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:116` | `WorkspaceMeta` | data | yes | `wmMembersNew` | `membersNew` | `![FilePath]` | `(.membersNew)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:117` | `WorkspaceMeta` | data | yes | `wmAdoptionBaseline` | `adoptionBaseline` | `!Bool` | `(.adoptionBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:122` | `WorkspaceDiffReport` | data | no | `workspaceReportMeta` | `meta` | `!WorkspaceMeta` | `(.meta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:123` | `WorkspaceDiffReport` | data | no | `workspaceReportGate` | `gate` | `!(Set CompatibilitySurface)` | `(.gate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:124` | `WorkspaceDiffReport` | data | no | `workspaceReportFindings` | `findings` | `![WorkspaceChange]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:125` | `WorkspaceDiffReport` | data | no | `workspaceReportSemanticImpact` | `semanticImpact` | `!(Maybe [MappedImpactDelta])` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:126` | `WorkspaceDiffReport` | data | no | `workspaceReportCoordinationImpact` | `coordinationImpact` | `!(Maybe [CoordinationImpact])` | `(.coordinationImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:36` | `CheckedFieldCopy` | data | yes | `outputSelector` | `outputSelector` | `!Name` | `(.outputSelector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:37` | `CheckedFieldCopy` | data | yes | `outputWireName` | `outputWireName` | `!Text` | `(.outputWireName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:38` | `CheckedFieldCopy` | data | yes | `outputFieldType` | `outputFieldType` | `!ResolvedAggregateType` | `(.outputFieldType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:43` | `OutputObligationKey` | newtype | yes | `unOutputObligationKey` | `unOutputObligationKey` | `Text` | explicit `unOutputObligationKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:52` | `EventOutputMapping` | data | yes | `outputSourceCommand` | `sourceCommand` | `!Name` | `(.sourceCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:53` | `EventOutputMapping` | data | yes | `outputFields` | `fields` | `![CheckedFieldCopy]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:56` | `EventOutputMapping` | data | yes | `outputObligation` | `obligation` | `!OutputObligationKey` | `(.obligation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `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:46` | `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:47` | `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:48` | `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:49` | `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:50` | `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:51` | `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:52` | `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:53` | `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:54` | `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:55` | `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:56` | `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:57` | `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:62` | `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:63` | `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:64` | `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:65` | `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:66` | `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:67` | `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:126` | `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:127` | `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:128` | `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:150` | `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:151` | `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:152` | `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)` |
-| `keiro-dsl/src/Keiro/Dsl/FieldIdentity.hs:21` | `ResolvedFieldIdentity` | data | no | `fieldLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:55` | `FrontendContext` | data | no | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:56` | `FrontendContext` | data | no | `language` | `language` | `!SourceLanguage` | `(.language)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:57` | `FrontendContext` | data | no | `definition` | `definition` | `!LanguageDefinition` | `(.definition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:91` | `FrontendFailure` | data | no | `phase` | `phase` | `!FrontendPhase` | `(.phase)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:92` | `FrontendFailure` | data | no | `code` | `code` | `!FrontendErrorCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:93` | `FrontendFailure` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:94` | `FrontendFailure` | data | no | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:95` | `FrontendFailure` | data | no | `expected` | `expected` | `![Text]` | `(.expected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:96` | `FrontendFailure` | data | no | `supportedVersions` | `supportedVersions` | `![LanguageVersion]` | `(.supportedVersions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:97` | `FrontendFailure` | data | no | `compatibility` | `compatibility` | `!ParseFailure` | `(.compatibility)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:143` | `LoweringFailure` | data | no | `code` | `code` | `!LoweringFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:144` | `LoweringFailure` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:145` | `LoweringFailure` | data | no | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:42` | `GoldenPayload` | data | yes | `goldenContext` | `context` | `!Text` | `(.context)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:43` | `GoldenPayload` | data | yes | `goldenAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:44` | `GoldenPayload` | data | yes | `goldenEvent` | `event` | `!Text` | `(.event)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:45` | `GoldenPayload` | data | yes | `goldenVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:46` | `GoldenPayload` | data | yes | `goldenJson` | `json` | `!Text` | `(.json)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:47` | `GoldenPayload` | data | yes | `goldenEvidence` | `evidence` | `!GoldenEvidence` | `(.evidence)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:203` | `Loc` | newtype | yes | `unLoc` | `unLoc` | `Int` | explicit `unLoc` positional function | rendered/canonical output | `deriving stock (Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:219` | `IdDecl` | data | yes | `idName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:220` | `IdDecl` | data | yes | `idPrefix` | `prefix` | `!Text` | `(.prefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:221` | `IdDecl` | data | yes | `idBinding` | `binding` | `!(Maybe NominalBindingDecl)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:222` | `IdDecl` | data | yes | `idLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:229` | `EnumDecl` | data | yes | `enumName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:230` | `EnumDecl` | data | yes | `enumCtors` | `ctors` | `![(Name, Text)]` | `(.ctors)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:231` | `EnumDecl` | data | yes | `enumBinding` | `binding` | `!(Maybe NominalBindingDecl)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:232` | `EnumDecl` | data | yes | `enumLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:240` | `RuleDecl` | data | yes | `ruleName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:241` | `RuleDecl` | data | yes | `ruleDomain` | `domain` | `!Name` | `(.domain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:242` | `RuleDecl` | data | yes | `ruleCodomain` | `codomain` | `!Name` | `(.codomain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:243` | `RuleDecl` | data | yes | `ruleCases` | `cases` | `![(Name, Expr)]` | `(.cases)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:244` | `RuleDecl` | data | yes | `ruleLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:285` | `WireField` | data | yes | `wfHaskell` | `haskell` | `!Name` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:286` | `WireField` | data | yes | `wfKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:287` | `WireField` | data | yes | `wfType` | `valueType` | `!TypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:288` | `WireField` | data | yes | `wfPresence` | `presence` | `!Presence` | `(.presence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:289` | `WireField` | data | yes | `wfOnMissing` | `onMissing` | `!(Maybe OnMissing)` | `(.onMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:290` | `WireField` | data | yes | `wfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:298` | `UnionEncoding` | data | yes | `ueTagField` | `tagField` | `!Text` | `(.tagField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:299` | `UnionEncoding` | data | yes | `ueContentsField` | `contentsField` | `!Text` | `(.contentsField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:300` | `UnionEncoding` | data | yes | `ueUnknownFields` | `unknownFields` | `!UnknownFields` | `(.unknownFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:305` | `WireEnum` | data | yes | `weCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:306` | `WireEnum` | data | yes | `weTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:307` | `WireEnum` | data | yes | `weLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:312` | `WireArm` | data | yes | `waCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:313` | `WireArm` | data | yes | `waTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:314` | `WireArm` | data | yes | `waPayload` | `payload` | `!(Maybe TypeExpr)` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:315` | `WireArm` | data | yes | `waLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:326` | `HaskellSource` | data | yes | `hsPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:327` | `HaskellSource` | data | yes | `hsModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:328` | `HaskellSource` | data | yes | `hsType` | `valueType` | `!Name` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:337` | `NominalBindingDecl` | data | yes | `nominalHaskell` | `haskell` | `!(Maybe HaskellSource)` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:338` | `NominalBindingDecl` | data | yes | `nominalBinding` | `binding` | `!(Maybe Text)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:339` | `NominalBindingDecl` | data | yes | `nominalBindingVersion` | `bindingVersion` | `!(Maybe Text)` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:340` | `NominalBindingDecl` | data | yes | `nominalCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:341` | `NominalBindingDecl` | data | yes | `nominalFixtures` | `fixtures` | `!(Maybe Text)` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:342` | `NominalBindingDecl` | data | yes | `nominalInitial` | `initial` | `!(Maybe Text)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:343` | `NominalBindingDecl` | data | yes | `nominalLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:352` | `NominalScalarDecl` | data | yes | `nominalScalarName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:353` | `NominalScalarDecl` | data | yes | `nominalScalarRepresentation` | `representation` | `!Name` | `(.representation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:354` | `NominalScalarDecl` | data | yes | `nominalScalarBinding` | `binding` | `!NominalBindingDecl` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:355` | `NominalScalarDecl` | data | yes | `nominalScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:361` | `MappedDecl` | data | yes | `msName` | `msName` | `!Name` | `(.msName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:362` | `MappedDecl` | data | yes | `msHaskell` | `msHaskell` | `!(Maybe HaskellSource)` | `(.msHaskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:363` | `MappedDecl` | data | yes | `msBinding` | `msBinding` | `!(Maybe Text)` | `(.msBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:364` | `MappedDecl` | data | yes | `msBindingVersion` | `msBindingVersion` | `!(Maybe Text)` | `(.msBindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:365` | `MappedDecl` | data | yes | `msCanonical` | `msCanonical` | `!(Maybe Text)` | `(.msCanonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:366` | `MappedDecl` | data | yes | `msFixtures` | `msFixtures` | `!(Maybe Text)` | `(.msFixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:367` | `MappedDecl` | data | yes | `msInitial` | `msInitial` | `!(Maybe Text)` | `(.msInitial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:368` | `MappedDecl` | data | yes | `msShape` | `msShape` | `!MappedShape` | `(.msShape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:369` | `MappedDecl` | data | yes | `msLoc` | `msLoc` | `!Loc` | `(.msLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:372` | `MappedDecl` | data | yes | `moName` | `moName` | `!Name` | `(.moName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:373` | `MappedDecl` | data | yes | `moHaskell` | `moHaskell` | `!(Maybe HaskellSource)` | `(.moHaskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:374` | `MappedDecl` | data | yes | `moCodecId` | `moCodecId` | `!(Maybe Text)` | `(.moCodecId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:375` | `MappedDecl` | data | yes | `moCodecVersion` | `moCodecVersion` | `!(Maybe Text)` | `(.moCodecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:376` | `MappedDecl` | data | yes | `moFixtures` | `moFixtures` | `!(Maybe Text)` | `(.moFixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:377` | `MappedDecl` | data | yes | `moInitial` | `moInitial` | `!(Maybe Text)` | `(.moInitial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:378` | `MappedDecl` | data | yes | `moLoc` | `moLoc` | `!Loc` | `(.moLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:386` | `Mapping` | data | yes | `mapPairs` | `pairs` | `![(Name, Name)]` | `(.pairs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:387` | `Mapping` | data | yes | `mapPartial` | `partial` | `!Bool` | `(.partial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:497` | `RegDecl` | data | yes | `regName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:498` | `RegDecl` | data | yes | `regType` | `valueType` | `!TypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:499` | `RegDecl` | data | yes | `regInitial` | `initial` | `!RegInitial` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:500` | `RegDecl` | data | yes | `regLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:508` | `StateDecl` | data | yes | `stName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:509` | `StateDecl` | data | yes | `stTerminal` | `terminal` | `!Bool` | `(.terminal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:510` | `StateDecl` | data | yes | `stLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:521` | `AggregateField` | data | yes | `aggregateFieldName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:522` | `AggregateField` | data | yes | `aggregateFieldSelector` | `selector` | `!(Maybe Name)` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:523` | `AggregateField` | data | yes | `aggregateFieldWireKey` | `wireKey` | `!(Maybe Text)` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:524` | `AggregateField` | data | yes | `aggregateFieldType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:525` | `AggregateField` | data | yes | `aggregateFieldLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:532` | `Field` | data | yes | `fieldName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:533` | `Field` | data | yes | `fieldType` | `valueType` | `!(Maybe Name)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:539` | `Command` | data | yes | `cmdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:540` | `Command` | data | yes | `cmdFields` | `fields` | `![AggregateField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:541` | `Command` | data | yes | `cmdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:551` | `Event` | data | yes | `evName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:552` | `Event` | data | yes | `evBody` | `body` | `!EventBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:554` | `Event` | data | yes | `evVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:557` | `Event` | data | yes | `evUpcastFrom` | `upcastFrom` | `!(Maybe (Int, Hole))` | `(.upcastFrom)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:562` | `Event` | data | yes | `evRetiring` | `retiring` | `!Bool` | `(.retiring)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:566` | `Event` | data | yes | `evDeprecated` | `deprecated` | `!Bool` | `(.deprecated)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:567` | `Event` | data | yes | `evLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:585` | `DomainOutcomeTypes` | data | yes | `rejectionType` | `rejectionType` | `!Name` | `(.rejectionType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:586` | `DomainOutcomeTypes` | data | yes | `noOpType` | `noOpType` | `!Name` | `(.noOpType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:587` | `DomainOutcomeTypes` | data | yes | `outcomeTypesLoc` | `outcomeTypesLoc` | `!Loc` | `(.outcomeTypesLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:607` | `Transition` | data | yes | `tSource` | `source` | `!Name` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:608` | `Transition` | data | yes | `tCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:609` | `Transition` | data | yes | `tImplementation` | `implementation` | `!TransitionImplementation` | `(.implementation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:610` | `Transition` | data | yes | `tGuard` | `guard` | `!(Maybe Expr)` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:611` | `Transition` | data | yes | `tWrites` | `writes` | `![(Name, Expr)]` | `(.writes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:612` | `Transition` | data | yes | `tEmits` | `emits` | `![Name]` | `(.emits)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:613` | `Transition` | data | yes | `tOutcome` | `outcome` | `!(Maybe TransitionOutcome)` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:616` | `Transition` | data | yes | `tOutcomeDuplicateLocs` | `outcomeDuplicateLocs` | `![Loc]` | `(.outcomeDuplicateLocs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:617` | `Transition` | data | yes | `tGoto` | `goto` | `!Name` | `(.goto)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:618` | `Transition` | data | yes | `tMode` | `mode` | `!TransitionMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:619` | `Transition` | data | yes | `tLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:647` | `WireSpec` | data | yes | `wireKind` | `kind` | `!Text` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:648` | `WireSpec` | data | yes | `wireFields` | `fields` | `!Text` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:649` | `WireSpec` | data | yes | `wireSchemaVersion` | `schemaVersion` | `!Int` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:656` | `ProjectionSpec` | data | yes | `projTable` | `table` | `!Name` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:657` | `ProjectionSpec` | data | yes | `projConsistency` | `consistency` | `!(Maybe Consistency)` | `(.consistency)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:658` | `ProjectionSpec` | data | yes | `projKey` | `key` | `!Name` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:659` | `ProjectionSpec` | data | yes | `projStatusMap` | `statusMap` | `!(Maybe Mapping)` | `(.statusMap)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:660` | `ProjectionSpec` | data | yes | `projLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:673` | `SnapshotSpec` | data | yes | `snapPolicy` | `policy` | `!SnapPolicy` | `(.policy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:674` | `SnapshotSpec` | data | yes | `snapCodecVersion` | `codecVersion` | `!Int` | `(.codecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:675` | `SnapshotSpec` | data | yes | `snapShapeHash` | `shapeHash` | `!Text` | `(.shapeHash)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:676` | `SnapshotSpec` | data | yes | `snapLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:683` | `Aggregate` | data | yes | `aggName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:684` | `Aggregate` | data | yes | `aggRegs` | `regs` | `![RegDecl]` | `(.regs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:685` | `Aggregate` | data | yes | `aggStates` | `states` | `![StateDecl]` | `(.states)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:686` | `Aggregate` | data | yes | `aggCommands` | `commands` | `![Command]` | `(.commands)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:687` | `Aggregate` | data | yes | `aggEvents` | `events` | `![Event]` | `(.events)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:688` | `Aggregate` | data | yes | `aggTransitions` | `transitions` | `![Transition]` | `(.transitions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:689` | `Aggregate` | data | yes | `aggDomainOutcomeTypes` | `domainOutcomeTypes` | `!(Maybe DomainOutcomeTypes)` | `(.domainOutcomeTypes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:692` | `Aggregate` | data | yes | `aggDomainOutcomeDuplicateLocs` | `domainOutcomeDuplicateLocs` | `![Loc]` | `(.domainOutcomeDuplicateLocs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:693` | `Aggregate` | data | yes | `aggWire` | `wire` | `!(Maybe WireSpec)` | `(.wire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:694` | `Aggregate` | data | yes | `aggProjection` | `projection` | `!(Maybe ProjectionSpec)` | `(.projection)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:695` | `Aggregate` | data | yes | `aggSnapshot` | `snapshot` | `!(Maybe SnapshotSpec)` | `(.snapshot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:696` | `Aggregate` | data | yes | `aggLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:706` | `FieldBinding` | data | yes | `fbName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:707` | `FieldBinding` | data | yes | `fbValue` | `value` | `!(Maybe Text)` | `(.value)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:714` | `InputDecl` | data | yes | `inName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:715` | `InputDecl` | data | yes | `inFields` | `fields` | `![Field]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:716` | `InputDecl` | data | yes | `inType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:717` | `InputDecl` | data | yes | `inLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:724` | `CorrelateDecl` | data | yes | `corrField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:725` | `CorrelateDecl` | data | yes | `corrVia` | `via` | `!Name` | `(.via)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:733` | `SagaRef` | data | yes | `sagaAgg` | `agg` | `!Name` | `(.agg)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:734` | `SagaRef` | data | yes | `sagaCategory` | `category` | `!Text` | `(.category)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:745` | `DispatchDisposition` | data | yes | `onAppended` | `onAppended` | `!Disp` | `(.onAppended)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:746` | `DispatchDisposition` | data | yes | `onDuplicate` | `onDuplicate` | `!Disp` | `(.onDuplicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:747` | `DispatchDisposition` | data | yes | `onFailed` | `onFailed` | `!Disp` | `(.onFailed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:753` | `AdvanceNode` | data | yes | `advCommand` | `advCommand` | `!Name` | `(.advCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:754` | `AdvanceNode` | data | yes | `advFields` | `advFields` | `![FieldBinding]` | `(.advFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:760` | `DispatchNode` | data | yes | `dispTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:761` | `DispatchNode` | data | yes | `dispKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:762` | `DispatchNode` | data | yes | `dispCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:763` | `DispatchNode` | data | yes | `dispFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:764` | `DispatchNode` | data | yes | `disposition` | `osition` | `!DispatchDisposition` | `(.osition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:765` | `DispatchNode` | data | yes | `dispLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:772` | `HandleNode` | data | yes | `hOn` | `on` | `!Name` | `(.on)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:773` | `HandleNode` | data | yes | `hAdvance` | `advance` | `!AdvanceNode` | `(.advance)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:774` | `HandleNode` | data | yes | `hDispatch` | `dispatch` | `![DispatchNode]` | `(.dispatch)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:775` | `HandleNode` | data | yes | `hSchedule` | `schedule` | `!Name` | `(.schedule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:781` | `IdExpr` | data | yes | `ideStrategy` | `strategy` | `!IdStrategy` | `(.strategy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:782` | `IdExpr` | data | yes | `idePrefix` | `prefix` | `!Text` | `(.prefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:783` | `IdExpr` | data | yes | `ideField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:794` | `FireAtExpr` | data | yes | `faField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:795` | `FireAtExpr` | data | yes | `faWindow` | `window` | `!Text` | `(.window)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:805` | `FireDisposition` | data | yes | `onOk` | `onOk` | `!FireOutcome` | `(.onOk)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:806` | `FireDisposition` | data | yes | `onReject` | `onReject` | `!FireOutcome` | `(.onReject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:807` | `FireDisposition` | data | yes | `onAmbiguous` | `onAmbiguous` | `!FireOutcome` | `(.onAmbiguous)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:808` | `FireDisposition` | data | yes | `onError` | `onError` | `!FireOutcome` | `(.onError)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:809` | `FireDisposition` | data | yes | `notMine` | `notMine` | `!FireOutcome` | `(.notMine)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:815` | `FireNode` | data | yes | `fireTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:816` | `FireNode` | data | yes | `fireKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:817` | `FireNode` | data | yes | `fireCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:818` | `FireNode` | data | yes | `fireFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:819` | `FireNode` | data | yes | `fireFiredEventId` | `firedEventId` | `!IdExpr` | `(.firedEventId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:820` | `FireNode` | data | yes | `fireDisposition` | `disposition` | `!FireDisposition` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:826` | `TimerNode` | data | yes | `tmName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:827` | `TimerNode` | data | yes | `tmId` | `id` | `!IdExpr` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:828` | `TimerNode` | data | yes | `tmFireAt` | `fireAt` | `!FireAtExpr` | `(.fireAt)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:829` | `TimerNode` | data | yes | `tmPayload` | `payload` | `![FieldBinding]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:830` | `TimerNode` | data | yes | `tmFire` | `fire` | `!FireNode` | `(.fire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:831` | `TimerNode` | data | yes | `tmDecodeUnknown` | `decodeUnknown` | `!Name` | `(.decodeUnknown)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:832` | `TimerNode` | data | yes | `tmMaxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:833` | `TimerNode` | data | yes | `tmDeadLetter` | `deadLetter` | `!Text` | `(.deadLetter)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:834` | `TimerNode` | data | yes | `tmLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:847` | `ReactionBody` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:848` | `ReactionBody` | data | yes | `versionLoc` | `versionLoc` | `!Loc` | `(.versionLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:849` | `ReactionBody` | data | yes | `inputs` | `inputs` | `!(NonEmpty InputDecl)` | `(.inputs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:850` | `ReactionBody` | data | yes | `reactions` | `reactions` | `!(NonEmpty ReactionNode)` | `(.reactions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:851` | `ReactionBody` | data | yes | `timerPolicy` | `timerPolicy` | `!(Maybe TimerPolicy)` | `(.timerPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:852` | `ReactionBody` | data | yes | `timers` | `timers` | `![ReactionTimerNode]` | `(.timers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:857` | `ReactionNode` | data | yes | `on` | `on` | `!Name` | `(.on)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:858` | `ReactionNode` | data | yes | `arms` | `arms` | `!(NonEmpty ReactionArm)` | `(.arms)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:859` | `ReactionNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:864` | `ReactionArm` | data | yes | `guard` | `guard` | `!ArmGuard` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:865` | `ReactionArm` | data | yes | `body` | `body` | `!ArmBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:866` | `ReactionArm` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:879` | `ArmBody` | data | yes | `advance` | `advance` | `!(Maybe AdvanceReaction)` | `(.advance)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:880` | `ArmBody` | data | yes | `followUps` | `followUps` | `![FollowUp]` | `(.followUps)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:885` | `AdvanceReaction` | data | yes | `command` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:886` | `AdvanceReaction` | data | yes | `fields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:887` | `AdvanceReaction` | data | yes | `accepted` | `accepted` | `!(Maybe [FollowUp])` | `(.accepted)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:888` | `AdvanceReaction` | data | yes | `silentNoAction` | `silentNoAction` | `!Bool` | `(.silentNoAction)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:889` | `AdvanceReaction` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:900` | `ScheduleNode` | data | yes | `timer` | `timer` | `!Name` | `(.timer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:901` | `ScheduleNode` | data | yes | `mode` | `mode` | `!ScheduleMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:902` | `ScheduleNode` | data | yes | `fireAt` | `fireAt` | `!FireAtExpr` | `(.fireAt)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:903` | `ScheduleNode` | data | yes | `bindings` | `bindings` | `![FieldBinding]` | `(.bindings)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:904` | `ScheduleNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:912` | `TimerPolicy` | data | yes | `maxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:913` | `TimerPolicy` | data | yes | `deadLetter` | `deadLetter` | `!Text` | `(.deadLetter)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:914` | `TimerPolicy` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:919` | `ReactionTimerNode` | data | yes | `name` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:920` | `ReactionTimerNode` | data | yes | `id` | `id` | `!IdExpr` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:921` | `ReactionTimerNode` | data | yes | `payload` | `payload` | `![PayloadField]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:922` | `ReactionTimerNode` | data | yes | `fire` | `fire` | `!FireNode` | `(.fire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:923` | `ReactionTimerNode` | data | yes | `decodeUnknown` | `decodeUnknown` | `!Name` | `(.decodeUnknown)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:924` | `ReactionTimerNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:941` | `ProcessNode` | data | yes | `procId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:943` | `ProcessNode` | data | yes | `procName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:944` | `ProcessNode` | data | yes | `procCorrelate` | `correlate` | `!CorrelateDecl` | `(.correlate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:945` | `ProcessNode` | data | yes | `procSaga` | `saga` | `!SagaRef` | `(.saga)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:946` | `ProcessNode` | data | yes | `procTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:947` | `ProcessNode` | data | yes | `procProjections` | `projections` | `![Name]` | `(.projections)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:948` | `ProcessNode` | data | yes | `body` | `body` | `!ProcessBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:949` | `ProcessNode` | data | yes | `procRejected` | `rejected` | `!PolicyChoice` | `(.rejected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:950` | `ProcessNode` | data | yes | `procPoison` | `poison` | `!PolicyChoice` | `(.poison)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:951` | `ProcessNode` | data | yes | `procLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:968` | `RouterSelectionDecl` | data | yes | `rsIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:969` | `RouterSelectionDecl` | data | yes | `rsIdentityLoc` | `identityLoc` | `!Loc` | `(.identityLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:970` | `RouterSelectionDecl` | data | yes | `rsVersion` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:971` | `RouterSelectionDecl` | data | yes | `rsVersionLoc` | `versionLoc` | `!Loc` | `(.versionLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:972` | `RouterSelectionDecl` | data | yes | `rsQuery` | `query` | `!Name` | `(.query)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:973` | `RouterSelectionDecl` | data | yes | `rsQueryLoc` | `queryLoc` | `!Loc` | `(.queryLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:974` | `RouterSelectionDecl` | data | yes | `rsQueryInput` | `queryInput` | `!Name` | `(.queryInput)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:975` | `RouterSelectionDecl` | data | yes | `rsQueryInputLoc` | `queryInputLoc` | `!Loc` | `(.queryInputLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:976` | `RouterSelectionDecl` | data | yes | `rsPredicate` | `predicate` | `!Expr` | `(.predicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:977` | `RouterSelectionDecl` | data | yes | `rsRecipient` | `recipient` | `!Expr` | `(.recipient)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:978` | `RouterSelectionDecl` | data | yes | `rsLimit` | `limit` | `!(Maybe (Natural, Loc))` | `(.limit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:979` | `RouterSelectionDecl` | data | yes | `rsOrder` | `order` | `!Name` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:980` | `RouterSelectionDecl` | data | yes | `rsOrderLoc` | `orderLoc` | `!Loc` | `(.orderLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:981` | `RouterSelectionDecl` | data | yes | `rsDedupe` | `dedupe` | `!Name` | `(.dedupe)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:982` | `RouterSelectionDecl` | data | yes | `rsDedupeLoc` | `dedupeLoc` | `!Loc` | `(.dedupeLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:983` | `RouterSelectionDecl` | data | yes | `rsEmptyPolicy` | `emptyPolicy` | `!SelectionDispositionSyntax` | `(.emptyPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:984` | `RouterSelectionDecl` | data | yes | `rsEmptyPolicyLoc` | `emptyPolicyLoc` | `!Loc` | `(.emptyPolicyLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:985` | `RouterSelectionDecl` | data | yes | `rsFailurePolicy` | `failurePolicy` | `!SelectionDispositionSyntax` | `(.failurePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:986` | `RouterSelectionDecl` | data | yes | `rsFailurePolicyLoc` | `failurePolicyLoc` | `!Loc` | `(.failurePolicyLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:987` | `RouterSelectionDecl` | data | yes | `rsRedelivery` | `redelivery` | `!Name` | `(.redelivery)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:988` | `RouterSelectionDecl` | data | yes | `rsRedeliveryLoc` | `redeliveryLoc` | `!Loc` | `(.redeliveryLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:989` | `RouterSelectionDecl` | data | yes | `rsPartial` | `partial` | `!Name` | `(.partial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:990` | `RouterSelectionDecl` | data | yes | `rsPartialLoc` | `partialLoc` | `!Loc` | `(.partialLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:991` | `RouterSelectionDecl` | data | yes | `rsLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1002` | `ResolveDecl` | data | yes | `rvSource` | `source` | `!ResolveSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1003` | `ResolveDecl` | data | yes | `rvRow` | `row` | `![Name]` | `(.row)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1004` | `ResolveDecl` | data | yes | `rvLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1009` | `RouterDispatchNode` | data | yes | `rdCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1010` | `RouterDispatchNode` | data | yes | `rdFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1011` | `RouterDispatchNode` | data | yes | `rdDisposition` | `disposition` | `!DispatchDisposition` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1012` | `RouterDispatchNode` | data | yes | `rdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1020` | `RouterNode` | data | yes | `rtId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1021` | `RouterNode` | data | yes | `rtName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1022` | `RouterNode` | data | yes | `rtInput` | `input` | `!InputDecl` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1023` | `RouterNode` | data | yes | `rtKey` | `key` | `!CorrelateDecl` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1024` | `RouterNode` | data | yes | `rtResolve` | `resolve` | `!ResolveDecl` | `(.resolve)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1025` | `RouterNode` | data | yes | `rtTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1026` | `RouterNode` | data | yes | `rtProjections` | `projections` | `![Name]` | `(.projections)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1027` | `RouterNode` | data | yes | `rtDispatch` | `dispatch` | `!RouterDispatchNode` | `(.dispatch)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1028` | `RouterNode` | data | yes | `rtRejected` | `rejected` | `!PolicyChoice` | `(.rejected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1029` | `RouterNode` | data | yes | `rtPoison` | `poison` | `!PolicyChoice` | `(.poison)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1030` | `RouterNode` | data | yes | `rtLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1041` | `ContractField` | data | yes | `cfName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1042` | `ContractField` | data | yes | `cfSelector` | `selector` | `!(Maybe Name)` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1043` | `ContractField` | data | yes | `cfWireKey` | `wireKey` | `!(Maybe Text)` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1044` | `ContractField` | data | yes | `cfType` | `valueType` | `!ContractType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1045` | `ContractField` | data | yes | `cfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1051` | `ContractEvent` | data | yes | `ceName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1052` | `ContractEvent` | data | yes | `ceTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1053` | `ContractEvent` | data | yes | `ceFields` | `fields` | `![ContractField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1061` | `ContractNode` | data | yes | `ctrName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1062` | `ContractNode` | data | yes | `ctrSchemaVersion` | `schemaVersion` | `!Int` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1063` | `ContractNode` | data | yes | `ctrDiscriminator` | `discriminator` | `!Name` | `(.discriminator)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1065` | `ContractNode` | data | yes | `ctrTopics` | `topics` | `![(Name, Text)]` | `(.topics)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1066` | `ContractNode` | data | yes | `ctrEvents` | `events` | `![ContractEvent]` | `(.events)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1067` | `ContractNode` | data | yes | `ctrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1083` | `BindRow` | data | yes | `brField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1084` | `BindRow` | data | yes | `brSource` | `source` | `!WireSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1085` | `BindRow` | data | yes | `brRequired` | `required` | `!Bool` | `(.required)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1086` | `BindRow` | data | yes | `brCrossCheck` | `crossCheck` | `!Bool` | `(.crossCheck)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1102` | `DispositionRow` | data | yes | `drOutcome` | `outcome` | `!Name` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1103` | `DispositionRow` | data | yes | `drAction` | `action` | `!InboxAction` | `(.action)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1104` | `DispositionRow` | data | yes | `drLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1111` | `DecodeSpec` | data | yes | `decEnvelope` | `envelope` | `!Text` | `(.envelope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1112` | `DecodeSpec` | data | yes | `decBodyStrict` | `bodyStrict` | `!Bool` | `(.bodyStrict)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1113` | `DecodeSpec` | data | yes | `decBodySchemaVersion` | `bodySchemaVersion` | `!Int` | `(.bodySchemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1129` | `IntakeNode` | data | yes | `inkName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1130` | `IntakeNode` | data | yes | `inkContract` | `contract` | `!Name` | `(.contract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1131` | `IntakeNode` | data | yes | `inkTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1132` | `IntakeNode` | data | yes | `inkAccept` | `accept` | `![Name]` | `(.accept)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1133` | `IntakeNode` | data | yes | `inkBinds` | `binds` | `![BindRow]` | `(.binds)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1134` | `IntakeNode` | data | yes | `inkDedupeKey` | `dedupeKey` | `!Name` | `(.dedupeKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1135` | `IntakeNode` | data | yes | `inkDedupePolicy` | `dedupePolicy` | `!Name` | `(.dedupePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1136` | `IntakeNode` | data | yes | `idempotence` | `idempotence` | `!IdempotenceMode` | `(.idempotence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1137` | `IntakeNode` | data | yes | `inkPersist` | `persist` | `!InkPersist` | `(.persist)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1138` | `IntakeNode` | data | yes | `inkDecode` | `decode` | `!DecodeSpec` | `(.decode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1139` | `IntakeNode` | data | yes | `inkDisposition` | `disposition` | `![DispositionRow]` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1140` | `IntakeNode` | data | yes | `inkLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1147` | `DeriveSpec` | newtype | yes | `dsPrefix` | `dsPrefix` | `Maybe Text` | `(.dsPrefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1152` | `EmitMapRow` | data | yes | `emrValue` | `value` | `!Text` | `(.value)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1153` | `EmitMapRow` | data | yes | `emrEvent` | `event` | `!Name` | `(.event)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1154` | `EmitMapRow` | data | yes | `emrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1161` | `EmitNode` | data | yes | `emName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1162` | `EmitNode` | data | yes | `emContract` | `contract` | `!Name` | `(.contract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1163` | `EmitNode` | data | yes | `emTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1164` | `EmitNode` | data | yes | `emSource` | `source` | `!Text` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1165` | `EmitNode` | data | yes | `emKey` | `key` | `!Name` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1166` | `EmitNode` | data | yes | `emDiscriminant` | `discriminant` | `!Name` | `(.discriminant)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1167` | `EmitNode` | data | yes | `emMap` | `map` | `![EmitMapRow]` | `(.map)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1169` | `EmitNode` | data | yes | `emSkip` | `skip` | `!Bool` | `(.skip)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1170` | `EmitNode` | data | yes | `emMessageId` | `messageId` | `!DeriveSpec` | `(.messageId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1171` | `EmitNode` | data | yes | `emIdempotencyKey` | `idempotencyKey` | `!DeriveSpec` | `(.idempotencyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1172` | `EmitNode` | data | yes | `emLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1178` | `BackoffSpec` | data | yes | `boKind` | `kind` | `!Name` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1179` | `BackoffSpec` | data | yes | `boWindow` | `window` | `!Text` | `(.window)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1180` | `BackoffSpec` | data | yes | `boMax` | `max` | `!(Maybe Text)` | `(.max)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1181` | `BackoffSpec` | data | yes | `boMultiplier` | `multiplier` | `!(Maybe Text)` | `(.multiplier)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1187` | `PublisherNode` | data | yes | `pubName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1188` | `PublisherNode` | data | yes | `pubEmit` | `emit` | `!Name` | `(.emit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1189` | `PublisherNode` | data | yes | `pubOrdering` | `ordering` | `!Name` | `(.ordering)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1190` | `PublisherNode` | data | yes | `pubMaxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1191` | `PublisherNode` | data | yes | `pubBackoff` | `backoff` | `!BackoffSpec` | `(.backoff)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1193` | `PublisherNode` | data | yes | `pubOutboxField` | `outboxField` | `!Name` | `(.outboxField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1194` | `PublisherNode` | data | yes | `pubLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1224` | `WqField` | data | yes | `wqfName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1225` | `WqField` | data | yes | `wqfWire` | `wire` | `!Text` | `(.wire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1226` | `WqField` | data | yes | `wqfType` | `valueType` | `!QueuePayloadType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1227` | `WqField` | data | yes | `wqfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1234` | `WqDispRow` | data | yes | `wqdOutcome` | `outcome` | `!Name` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1235` | `WqDispRow` | data | yes | `wqdAction` | `action` | `!InboxAction` | `(.action)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1236` | `WqDispRow` | data | yes | `wqdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1246` | `WqGroupKey` | data | yes | `gkField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1247` | `WqGroupKey` | data | yes | `gkVia` | `via` | `!Name` | `(.via)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1248` | `WqGroupKey` | data | yes | `gkFixture` | `fixture` | `!(Maybe Text)` | `(.fixture)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1263` | `WorkqueueNode` | data | yes | `wqName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1264` | `WorkqueueNode` | data | yes | `wqLogical` | `logical` | `!Text` | `(.logical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1265` | `WorkqueueNode` | data | yes | `wqPhysical` | `physical` | `!Text` | `(.physical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1266` | `WorkqueueNode` | data | yes | `wqDlq` | `dlq` | `!Text` | `(.dlq)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1267` | `WorkqueueNode` | data | yes | `wqTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1268` | `WorkqueueNode` | data | yes | `wqOrdering` | `ordering` | `!WqOrdering` | `(.ordering)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1269` | `WorkqueueNode` | data | yes | `wqGroupKey` | `groupKey` | `!(Maybe WqGroupKey)` | `(.groupKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1270` | `WorkqueueNode` | data | yes | `wqProvision` | `provision` | `!WqProvision` | `(.provision)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1271` | `WorkqueueNode` | data | yes | `wqPayloadName` | `payloadName` | `!Name` | `(.payloadName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1272` | `WorkqueueNode` | data | yes | `wqPayload` | `payload` | `![WqField]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1273` | `WorkqueueNode` | data | yes | `wqMaxRetries` | `maxRetries` | `!Int` | `(.maxRetries)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1274` | `WorkqueueNode` | data | yes | `wqDelay` | `delay` | `!Text` | `(.delay)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1275` | `WorkqueueNode` | data | yes | `wqDlqOn` | `dlqOn` | `!Bool` | `(.dlqOn)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1276` | `WorkqueueNode` | data | yes | `wqDisposition` | `disposition` | `![WqDispRow]` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1277` | `WorkqueueNode` | data | yes | `wqLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1284` | `PgmqDispatchNode` | data | yes | `pdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1285` | `PgmqDispatchNode` | data | yes | `pdSourceReadModel` | `sourceReadModel` | `!Name` | `(.sourceReadModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1286` | `PgmqDispatchNode` | data | yes | `pdSourceKey` | `sourceKey` | `!Name` | `(.sourceKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1287` | `PgmqDispatchNode` | data | yes | `pdFanoutBody` | `fanoutBody` | `!Name` | `(.fanoutBody)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1288` | `PgmqDispatchNode` | data | yes | `pdDedupKey` | `dedupKey` | `!Name` | `(.dedupKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1289` | `PgmqDispatchNode` | data | yes | `pdDedupReadModel` | `dedupReadModel` | `!Name` | `(.dedupReadModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1290` | `PgmqDispatchNode` | data | yes | `pdDedupReadModelField` | `dedupReadModelField` | `!Text` | `(.dedupReadModelField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1291` | `PgmqDispatchNode` | data | yes | `pdDedupQueue` | `dedupQueue` | `!Name` | `(.dedupQueue)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1292` | `PgmqDispatchNode` | data | yes | `pdDedupQueueField` | `dedupQueueField` | `!Text` | `(.dedupQueueField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1293` | `PgmqDispatchNode` | data | yes | `pdEnqueueTo` | `enqueueTo` | `!Name` | `(.enqueueTo)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1294` | `PgmqDispatchNode` | data | yes | `pdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1302` | `RmColumn` | data | yes | `rmcName` | `rmcName` | `!Text` | `(.rmcName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1303` | `RmColumn` | data | yes | `rmcType` | `rmcType` | `!Text` | `(.rmcType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1304` | `RmColumn` | data | yes | `rmcRequired` | `rmcRequired` | `!Bool` | `(.rmcRequired)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1333` | `ReadModelSupply` | data | yes | `legacyConsistency` | `legacyConsistency` | `!Consistency` | `(.legacyConsistency)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1334` | `ReadModelSupply` | data | yes | `legacyScope` | `legacyScope` | `!(Maybe RmScope)` | `(.legacyScope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1335` | `ReadModelSupply` | data | yes | `legacyFeed` | `legacyFeed` | `!RmFeed` | `(.legacyFeed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1336` | `ReadModelSupply` | data | yes | `legacySubscription` | `legacySubscription` | `!(Maybe Text)` | `(.legacySubscription)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1344` | `ReadModelQueryTypes` | data | yes | `input` | `input` | `!TypeExpr` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1345` | `ReadModelQueryTypes` | data | yes | `result` | `result` | `!TypeExpr` | `(.result)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1346` | `ReadModelQueryTypes` | data | yes | `inputLoc` | `inputLoc` | `!Loc` | `(.inputLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1347` | `ReadModelQueryTypes` | data | yes | `resultLoc` | `resultLoc` | `!Loc` | `(.resultLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1354` | `ReadModelNode` | data | yes | `rmName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1355` | `ReadModelNode` | data | yes | `rmTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1356` | `ReadModelNode` | data | yes | `rmSchema` | `schema` | `!Text` | `(.schema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1357` | `ReadModelNode` | data | yes | `rmColumns` | `columns` | `![RmColumn]` | `(.columns)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1358` | `ReadModelNode` | data | yes | `rmVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1359` | `ReadModelNode` | data | yes | `rmShape` | `shape` | `!Text` | `(.shape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1360` | `ReadModelNode` | data | yes | `rmFreshness` | `freshness` | `!QueryFreshnessNode` | `(.freshness)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1361` | `ReadModelNode` | data | yes | `rmSupply` | `supply` | `!ReadModelSupply` | `(.supply)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1362` | `ReadModelNode` | data | yes | `rmGroup` | `group` | `!(Maybe Name)` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1363` | `ReadModelNode` | data | yes | `rmObservedTargets` | `observedTargets` | `![Name]` | `(.observedTargets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1364` | `ReadModelNode` | data | yes | `rmBackingTarget` | `backingTarget` | `!(Maybe Name)` | `(.backingTarget)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1365` | `ReadModelNode` | data | yes | `queryTypes` | `queryTypes` | `!(Maybe ReadModelQueryTypes)` | `(.queryTypes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1366` | `ReadModelNode` | data | yes | `rmLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1397` | `ProjectionTargetNode` | data | yes | `ptName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1398` | `ProjectionTargetNode` | data | yes | `ptSchema` | `schema` | `!Text` | `(.schema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1399` | `ProjectionTargetNode` | data | yes | `ptTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1400` | `ProjectionTargetNode` | data | yes | `ptReset` | `reset` | `!TargetResetPolicy` | `(.reset)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1401` | `ProjectionTargetNode` | data | yes | `ptDependsOn` | `dependsOn` | `![Name]` | `(.dependsOn)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1402` | `ProjectionTargetNode` | data | yes | `ptLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1408` | `RebuildGroupNode` | data | yes | `rgName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1409` | `RebuildGroupNode` | data | yes | `rgTargets` | `targets` | `![Name]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1410` | `RebuildGroupNode` | data | yes | `rgOrder` | `order` | `![Name]` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1411` | `RebuildGroupNode` | data | yes | `rgLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1422` | `PromotionObjectNode` | data | yes | `rpoKind` | `kind` | `!PromotionObjectKindNode` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1423` | `PromotionObjectNode` | data | yes | `rpoGenerationName` | `generationName` | `!Text` | `(.generationName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1424` | `PromotionObjectNode` | data | yes | `rpoCanonicalName` | `canonicalName` | `!Text` | `(.canonicalName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1431` | `RevisionTargetNode` | data | yes | `prtTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1432` | `RevisionTargetNode` | data | yes | `prtSchemaVersion` | `schemaVersion` | `!Text` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1433` | `RevisionTargetNode` | data | yes | `prtProvisioner` | `provisioner` | `!Text` | `(.provisioner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1434` | `RevisionTargetNode` | data | yes | `prtProvisionerVersion` | `provisionerVersion` | `!Int` | `(.provisionerVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1435` | `RevisionTargetNode` | data | yes | `prtExpectedShape` | `expectedShape` | `!Text` | `(.expectedShape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1436` | `RevisionTargetNode` | data | yes | `prtValidator` | `validator` | `!Text` | `(.validator)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1437` | `RevisionTargetNode` | data | yes | `prtValidatorVersion` | `validatorVersion` | `!Int` | `(.validatorVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1438` | `RevisionTargetNode` | data | yes | `prtPromotionObjects` | `promotionObjects` | `![PromotionObjectNode]` | `(.promotionObjects)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1443` | `ProjectionRevisionNode` | data | yes | `prvName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1444` | `ProjectionRevisionNode` | data | yes | `prvGroup` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1445` | `ProjectionRevisionNode` | data | yes | `prvTargets` | `targets` | `![RevisionTargetNode]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1446` | `ProjectionRevisionNode` | data | yes | `prvLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1454` | `ExternalReadNode` | data | yes | `erName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1455` | `ExternalReadNode` | data | yes | `erVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1456` | `ExternalReadNode` | data | yes | `erQueryModel` | `queryModel` | `!Name` | `(.queryModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1457` | `ExternalReadNode` | data | yes | `erResultSchema` | `resultSchema` | `!Text` | `(.resultSchema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1458` | `ExternalReadNode` | data | yes | `erResultType` | `resultType` | `!Text` | `(.resultType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1459` | `ExternalReadNode` | data | yes | `erCompatibleRevisions` | `compatibleRevisions` | `![Name]` | `(.compatibleRevisions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1460` | `ExternalReadNode` | data | yes | `erSurfaceGeneration` | `surfaceGeneration` | `!Int` | `(.surfaceGeneration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1461` | `ExternalReadNode` | data | yes | `erLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1496` | `ProjectionOwnerNode` | data | yes | `poName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1497` | `ProjectionOwnerNode` | data | yes | `poSources` | `sources` | `![CatalogSource]` | `(.sources)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1498` | `ProjectionOwnerNode` | data | yes | `poDelivery` | `delivery` | `!ProjectionDelivery` | `(.delivery)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1499` | `ProjectionOwnerNode` | data | yes | `poGroup` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1500` | `ProjectionOwnerNode` | data | yes | `poTargets` | `targets` | `![Name]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1501` | `ProjectionOwnerNode` | data | yes | `poOrder` | `order` | `!Int` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1502` | `ProjectionOwnerNode` | data | yes | `poSubscription` | `subscription` | `!(Maybe Text)` | `(.subscription)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1503` | `ProjectionOwnerNode` | data | yes | `poDedup` | `dedup` | `!(Maybe Text)` | `(.dedup)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1504` | `ProjectionOwnerNode` | data | yes | `poCheckpointOnMissing` | `checkpointOnMissing` | `![CheckpointOnMissingNode]` | `(.checkpointOnMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1505` | `ProjectionOwnerNode` | data | yes | `poReplay` | `replay` | `!ProjectionReplayPolicy` | `(.replay)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1506` | `ProjectionOwnerNode` | data | yes | `poLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1532` | `WorkflowNode` | data | yes | `wfId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1534` | `WorkflowNode` | data | yes | `wfStable` | `stable` | `!Text` | `(.stable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1535` | `WorkflowNode` | data | yes | `wfInput` | `input` | `!Name` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1536` | `WorkflowNode` | data | yes | `wfInputFields` | `inputFields` | `![Field]` | `(.inputFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1537` | `WorkflowNode` | data | yes | `wfOutput` | `output` | `!Name` | `(.output)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1539` | `WorkflowNode` | data | yes | `wfIdField` | `idField` | `!(Maybe Name)` | `(.idField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1540` | `WorkflowNode` | data | yes | `wfIdVia` | `idVia` | `!Name` | `(.idVia)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1541` | `WorkflowNode` | data | yes | `wfBody` | `body` | `![WfBodyItem]` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1542` | `WorkflowNode` | data | yes | `wfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1562` | `OperationNode` | data | yes | `opName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1563` | `OperationNode` | data | yes | `opShape` | `shape` | `!OperationShape` | `(.shape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1564` | `OperationNode` | data | yes | `opLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1610` | `Spec` | data | yes | `specContext` | `context` | `!Name` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1611` | `Spec` | data | yes | `specModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1612` | `Spec` | data | yes | `specLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1613` | `Spec` | data | yes | `specIds` | `ids` | `![IdDecl]` | `(.ids)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1614` | `Spec` | data | yes | `specEnums` | `enums` | `![EnumDecl]` | `(.enums)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1615` | `Spec` | data | yes | `specRules` | `rules` | `![RuleDecl]` | `(.rules)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1616` | `Spec` | data | yes | `specNominalScalars` | `nominalScalars` | `![NominalScalarDecl]` | `(.nominalScalars)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1617` | `Spec` | data | yes | `specMapped` | `mapped` | `![MappedDecl]` | `(.mapped)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1618` | `Spec` | data | yes | `specNodes` | `nodes` | `![Node]` | `(.nodes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:41` | `HaskellReference` | data | yes | `referenceModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:42` | `HaskellReference` | data | yes | `referenceName` | `name` | `!Text` | `(.name)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:43` | `HaskellReference` | data | yes | `referenceNamespace` | `namespace` | `!HaskellNamespace` | `(.namespace)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:44` | `HaskellReference` | data | yes | `referenceQualification` | `qualification` | `!QualificationPreference` | `(.qualification)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:49` | `ImportEnvironment` | data | yes | `targetModule` | `targetModule` | `!Text` | `(.targetModule)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:50` | `ImportEnvironment` | data | yes | `localNames` | `localNames` | `!(Set Text)` | `(.localNames)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:51` | `ImportEnvironment` | data | yes | `reservedQualifiers` | `reservedQualifiers` | `!(Set Text)` | `(.reservedQualifiers)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:64` | `HaskellImportPlan` | data | no | `importPlanTargetModule` | `targetModule` | `!Text` | `(.targetModule)`, pattern, or construction | Haskell API and runtime semantics | `none` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:65` | `HaskellImportPlan` | data | no | `importPlanDeclarations` | `declarations` | `!(Set Text)` | `(.declarations)`, pattern, or construction | Haskell API and runtime semantics | `none` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:66` | `HaskellImportPlan` | data | no | `importPlanReferences` | `references` | `!(Map HaskellReference Text)` | `(.references)`, pattern, or construction | Haskell API and runtime semantics | `none` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:62` | `DerivedHaskellName` | data | no | `upperCamel` | `upperCamel` | `!UpperCamelName` | `(.upperCamel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:63` | `DerivedHaskellName` | data | no | `lowerCamel` | `lowerCamel` | `!LowerCamelName` | `(.lowerCamel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:96` | `NameSite` | data | no | `siteKind` | `kind` | `!NameSiteKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:97` | `NameSite` | data | no | `siteLogicalName` | `logicalName` | `!Text` | `(.logicalName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:98` | `NameSite` | data | no | `siteOwner` | `owner` | `!Text` | `(.owner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:99` | `NameSite` | data | no | `siteLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:108` | `HaskellOccurrenceKey` | data | no | `occurrenceModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:109` | `HaskellOccurrenceKey` | data | no | `occurrenceSpace` | `space` | `!HaskellOccurrenceSpace` | `(.space)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:110` | `HaskellOccurrenceKey` | data | no | `occurrenceScope` | `scope` | `!Text` | `(.scope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:111` | `HaskellOccurrenceKey` | data | no | `occurrenceName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:116` | `PlannedOccurrence` | data | no | `plannedOccurrenceKey` | `key` | `!HaskellOccurrenceKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:117` | `PlannedOccurrence` | data | no | `plannedOccurrenceSite` | `site` | `!NameSite` | `(.site)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:28` | `SourceMove` | data | yes | `moveRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:29` | `SourceMove` | data | yes | `moveKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:30` | `SourceMove` | data | yes | `moveOldModule` | `oldModule` | `!Text` | `(.oldModule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:31` | `SourceMove` | data | yes | `moveNewModule` | `newModule` | `!Text` | `(.newModule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:32` | `SourceMove` | data | yes | `moveOldPath` | `oldPath` | `!FilePath` | `(.oldPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:33` | `SourceMove` | data | yes | `moveNewPath` | `newPath` | `!FilePath` | `(.newPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:34` | `SourceMove` | data | yes | `moveBackupPath` | `backupPath` | `!FilePath` | `(.backupPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:38` | `SourceMove` | data | yes | `moveContentDigest` | `contentDigest` | `!(Maybe Text)` | `(.contentDigest)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:41` | `SourceMove` | data | yes | `moveTransformedDigest` | `transformedDigest` | `!(Maybe Text)` | `(.transformedDigest)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:97` | `SourceLanguage` | data | yes | `declaredLanguageVersion` | `declaredLanguageVersion` | `!LanguageVersion` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `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:152` | `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:153` | `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:213` | `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:214` | `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:217` | `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:218` | `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:219` | `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:220` | `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:221` | `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:457` | `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:458` | `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:459` | `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:460` | `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:461` | `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:462` | `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:529` | `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:530` | `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)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:25` | `ConsumerPlan` | data | yes | `consumerPackages` | `packages` | `![Text]` | `(.packages)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:26` | `ConsumerPlan` | data | yes | `consumerModules` | `modules` | `![Text]` | `(.modules)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:27` | `ConsumerPlan` | data | yes | `consumerMappings` | `mappings` | `![MappingIdentity]` | `(.mappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:33` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:34` | `MappingIdentity` | data | yes | `mappingCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:35` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:36` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:37` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:38` | `MappingIdentity` | data | yes | `mappingBindingSymbol` | `bindingSymbol` | `!Text` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:39` | `MappingIdentity` | data | yes | `mappingBindingVersion` | `bindingVersion` | `!Text` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:42` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:43` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:44` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:45` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:46` | `MappingIdentity` | data | yes | `mappingCodecIdentity` | `codecIdentity` | `!Text` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:47` | `MappingIdentity` | data | yes | `mappingCodecVersion` | `codecVersion` | `!Text` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:50` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:51` | `MappingIdentity` | data | yes | `mappingNominalCategory` | `nominalCategory` | `!Text` | `(.nominalCategory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:52` | `MappingIdentity` | data | yes | `mappingNominalRepresentation` | `nominalRepresentation` | `!Text` | `(.nominalRepresentation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:53` | `MappingIdentity` | data | yes | `mappingCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:54` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:55` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:56` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:57` | `MappingIdentity` | data | yes | `mappingBindingSymbol` | `bindingSymbol` | `!Text` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:58` | `MappingIdentity` | data | yes | `mappingBindingVersion` | `bindingVersion` | `!Text` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:59` | `MappingIdentity` | data | yes | `mappingFixtureSymbol` | `fixtureSymbol` | `!Text` | `(.fixtureSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:60` | `MappingIdentity` | data | yes | `mappingInitialSymbol` | `initialSymbol` | `!(Maybe Text)` | `(.initialSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:28` | `MappedFinding` | data | yes | `mfDeclaration` | `declaration` | `!Name` | `(.declaration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:29` | `MappedFinding` | data | yes | `mfLeaf` | `leaf` | `!Text` | `(.leaf)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:30` | `MappedFinding` | data | yes | `mfCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:31` | `MappedFinding` | data | yes | `mfDetail` | `detail` | `!Text` | `(.detail)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:32` | `MappedFinding` | data | yes | `mfUsePaths` | `usePaths` | `![UsePath]` | `(.usePaths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:33` | `MappedFinding` | data | yes | `mfOldUnknownFields` | `oldUnknownFields` | `!(Maybe UnknownFields)` | `(.oldUnknownFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:70` | `CheckedNominalEquality` | data | yes | `equalityKeyRepresentation` | `keyRepresentation` | `!NominalEqualityKey` | `(.keyRepresentation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:71` | `CheckedNominalEquality` | data | yes | `equalityDomain` | `domain` | `!NominalEqualityDomain` | `(.domain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:72` | `CheckedNominalEquality` | data | yes | `equalityContractVersion` | `contractVersion` | `!Text` | `(.contractVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:82` | `ResolvedNominalType` | data | yes | `resolvedNominalName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:83` | `ResolvedNominalType` | data | yes | `resolvedNominalRepresentation` | `representation` | `!NominalRepresentation` | `(.representation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:84` | `ResolvedNominalType` | data | yes | `resolvedNominalOwnership` | `ownership` | `!NominalOwnership` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:85` | `ResolvedNominalType` | data | yes | `resolvedNominalLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:75` | `ContextualParseFailure` | data | no | `contextualFailureCode` | `code` | `!SourceLanguageErrorCode` | `(.code)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:76` | `ContextualParseFailure` | data | no | `contextualFailureFeature` | `feature` | `!(Maybe LanguageFeature)` | `(.feature)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:77` | `ContextualParseFailure` | data | no | `contextualFailureSpan` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Parser/Preamble.hs:60` | `InitialLanguageClause` | data | no | `initialLanguageSpan` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `none` |
-| `keiro-dsl/src/Keiro/Dsl/Parser/Preamble.hs:61` | `InitialLanguageClause` | data | no | `initialLanguageText` | `text` | `!Text` | `(.text)`, pattern, or construction | Haskell API and runtime semantics | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:42` | `CheckedFollowUp` | newtype | yes | `syntax` | `syntax` | `FollowUp` | `(.syntax)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:46` | `CheckedReactionArm` | data | yes | `input` | `input` | `!Name` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:47` | `CheckedReactionArm` | data | yes | `ordinal` | `ordinal` | `!Int` | `(.ordinal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:48` | `CheckedReactionArm` | data | yes | `guard` | `guard` | `!CheckedReactionGuard` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:49` | `CheckedReactionArm` | data | yes | `body` | `body` | `!ArmBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:53` | `CheckedReactionTimer` | newtype | yes | `syntax` | `syntax` | `ReactionTimerNode` | `(.syntax)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:57` | `CheckedProcessReaction` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:58` | `CheckedProcessReaction` | data | yes | `inputs` | `inputs` | `!(NonEmpty InputDecl)` | `(.inputs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:59` | `CheckedProcessReaction` | data | yes | `arms` | `arms` | `![CheckedReactionArm]` | `(.arms)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:60` | `CheckedProcessReaction` | data | yes | `timers` | `timers` | `![CheckedReactionTimer]` | `(.timers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:61` | `CheckedProcessReaction` | data | yes | `fingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:62` | `CheckedProcessReaction` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:63` | `CheckedProcessReaction` | data | yes | `holeObligations` | `holeObligations` | `![Text]` | `(.holeObligations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:90` | `ProcessReactionDiagnostic` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:91` | `ProcessReactionDiagnostic` | data | yes | `code` | `code` | `!ProcessReactionDiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:92` | `ProcessReactionDiagnostic` | data | yes | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:39` | `ProjectionMappedRoot` | data | yes | `consumer` | `consumer` | `!DerivedMappedConsumer` | `(.consumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:40` | `ProjectionMappedRoot` | data | yes | `declaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:41` | `ProjectionMappedRoot` | data | yes | `path` | `path` | `!UsePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:49` | `ProjectionOperationalImpact` | data | yes | `consumer` | `consumer` | `!DerivedMappedConsumer` | `(.consumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:50` | `ProjectionOperationalImpact` | data | yes | `group` | `group` | `!(Maybe Name)` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:51` | `ProjectionOperationalImpact` | data | yes | `targets` | `targets` | `!(Set Name)` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:52` | `ProjectionOperationalImpact` | data | yes | `readModels` | `readModels` | `!(Set Name)` | `(.readModels)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:53` | `ProjectionOperationalImpact` | data | yes | `replayable` | `replayable` | `!Bool` | `(.replayable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:54` | `ProjectionOperationalImpact` | data | yes | `sourceFingerprint` | `sourceFingerprint` | `!Text` | `(.sourceFingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:62` | `UnsupportedProjectionImpact` | data | yes | `source` | `source` | `!UnsupportedProjectionSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:63` | `UnsupportedProjectionImpact` | data | yes | `group` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:64` | `UnsupportedProjectionImpact` | data | yes | `targets` | `targets` | `!(Set Name)` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:65` | `UnsupportedProjectionImpact` | data | yes | `readModels` | `readModels` | `!(Set Name)` | `(.readModels)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:66` | `UnsupportedProjectionImpact` | data | yes | `replayable` | `replayable` | `!Bool` | `(.replayable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:71` | `ProjectionMappedImpact` | data | yes | `roots` | `roots` | `![ProjectionMappedRoot]` | `(.roots)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:72` | `ProjectionMappedImpact` | data | yes | `consumers` | `consumers` | `!(Map MappedKey (Set DerivedMappedConsumer))` | `(.consumers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:73` | `ProjectionMappedImpact` | data | yes | `operations` | `operations` | `!(Map DerivedMappedConsumer ProjectionOperationalImpact)` | `(.operations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:74` | `ProjectionMappedImpact` | data | yes | `unsupported` | `unsupported` | `![UnsupportedProjectionImpact]` | `(.unsupported)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:21` | `ResolvedProjectionSupply` | data | yes | `supplyQueryModel` | `queryModel` | `!Name` | `(.queryModel)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:22` | `ResolvedProjectionSupply` | data | yes | `supplyProjectionOwner` | `projectionOwner` | `!Name` | `(.projectionOwner)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:23` | `ResolvedProjectionSupply` | data | yes | `supplyRebuildGroup` | `rebuildGroup` | `!Name` | `(.rebuildGroup)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:24` | `ResolvedProjectionSupply` | data | yes | `supplyObservedTargets` | `observedTargets` | `!(NonEmpty Name)` | `(.observedTargets)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:25` | `ResolvedProjectionSupply` | data | yes | `supplyQueryLoc` | `queryLoc` | `!Loc` | `(.queryLoc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:26` | `ResolvedProjectionSupply` | data | yes | `supplyOwnerLoc` | `ownerLoc` | `!Loc` | `(.ownerLoc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:46` | `ProjectionSupplyAnalysis` | data | yes | `resolvedProjectionSupplies` | `resolvedProjectionSupplies` | `![ResolvedProjectionSupply]` | `(.resolvedProjectionSupplies)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:47` | `ProjectionSupplyAnalysis` | data | yes | `projectionSupplyIssues` | `projectionSupplyIssues` | `![ProjectionSupplyIssue]` | `(.projectionSupplyIssues)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:35` | `QueryContractIdentity` | data | yes | `qciReadModel` | `readModel` | `!Name` | `(.readModel)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:36` | `QueryContractIdentity` | data | yes | `qciPosition` | `position` | `!QueryContractPosition` | `(.position)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:37` | `QueryContractIdentity` | data | yes | `qciTypeExpression` | `typeExpression` | `!Text` | `(.typeExpression)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:38` | `QueryContractIdentity` | data | yes | `qciMappedDependencies` | `mappedDependencies` | `![Name]` | `(.mappedDependencies)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:43` | `QueryContractDrift` | data | yes | `qcdKey` | `key` | `!(Name, QueryContractPosition)` | `(.key)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:44` | `QueryContractDrift` | data | yes | `qcdPrevious` | `previous` | `!(Maybe QueryContractIdentity)` | `(.previous)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:45` | `QueryContractDrift` | data | yes | `qcdCurrent` | `current` | `!(Maybe QueryContractIdentity)` | `(.current)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:55` | `AggregateImpact` | data | yes | `eventTypes` | `eventTypes` | `!(Set Name)` | `(.eventTypes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:56` | `AggregateImpact` | data | yes | `includeSnapshotStreams` | `includeSnapshotStreams` | `!Bool` | `(.includeSnapshotStreams)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:71` | `CatalogReplayImpact` | data | yes | `affectedGroups` | `affectedGroups` | `!(Set Name)` | `(.affectedGroups)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:72` | `CatalogReplayImpact` | data | yes | `affectedTargets` | `affectedTargets` | `!(Set Name)` | `(.affectedTargets)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:73` | `CatalogReplayImpact` | data | yes | `affectedSources` | `affectedSources` | `!(Set Text)` | `(.affectedSources)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:74` | `CatalogReplayImpact` | data | yes | `affectedAdapters` | `affectedAdapters` | `!(Set Name)` | `(.affectedAdapters)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:75` | `CatalogReplayImpact` | data | yes | `invalidatesRunningFingerprint` | `invalidatesRunningFingerprint` | `!Bool` | `(.invalidatesRunningFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:216` | `ReplaySurfaceContext` | data | no | `surfaceSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:217` | `ReplaySurfaceContext` | data | no | `surfaceGraphResult` | `graphResult` | `Either (NE.NonEmpty TypeGraphError) TypeGraph` | `(.graphResult)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:218` | `ReplaySurfaceContext` | data | no | `surfaceSymbols` | `symbols` | `AggregateSymbols` | `(.symbols)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:54` | `CheckedReadModelQuery` | data | yes | `checkedQueryName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:55` | `CheckedReadModelQuery` | data | yes | `checkedQueryInputType` | `inputType` | `!ResolvedTypeExpr` | `(.inputType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:56` | `CheckedReadModelQuery` | data | yes | `checkedQueryResultType` | `resultType` | `!ResolvedTypeExpr` | `(.resultType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:61` | `CheckedMappedExpr` | data | yes | `checkedMappedExprRoot` | `root` | `!SelectionRoot` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:62` | `CheckedMappedExpr` | data | yes | `checkedMappedExprType` | `valueType` | `!ResolvedTypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:67` | `CheckedMappedType` | data | yes | `checkedMappedTypeKey` | `key` | `!MappedKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:68` | `CheckedMappedType` | data | yes | `checkedMappedTypeConstructor` | `constructor` | `!Name` | `(.constructor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:69` | `CheckedMappedType` | data | yes | `checkedMappedTypeFields` | `fields` | `![ResolvedWireField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:87` | `CheckedSelectionPathSegment` | data | yes | `checkedPathField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:88` | `CheckedSelectionPathSegment` | data | yes | `checkedPathWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:89` | `CheckedSelectionPathSegment` | data | yes | `checkedPathOwner` | `owner` | `!MappedKey` | `(.owner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:94` | `CheckedScalarExpr` | data | yes | `checkedScalarType` | `valueType` | `!SelectionScalarType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:95` | `CheckedScalarExpr` | data | yes | `checkedScalarNode` | `node` | `!CheckedScalarNode` | `(.node)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:96` | `CheckedScalarExpr` | data | yes | `checkedScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:137` | `CheckedRouterSelection` | data | yes | `checkedIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:138` | `CheckedRouterSelection` | data | yes | `checkedVersion` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:139` | `CheckedRouterSelection` | data | yes | `checkedQuery` | `query` | `!CheckedReadModelQuery` | `(.query)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:140` | `CheckedRouterSelection` | data | yes | `checkedInputBinding` | `inputBinding` | `!CheckedMappedExpr` | `(.inputBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:141` | `CheckedRouterSelection` | data | yes | `checkedRowBinding` | `rowBinding` | `!CheckedMappedType` | `(.rowBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:142` | `CheckedRouterSelection` | data | yes | `checkedKey` | `key` | `!CheckedScalarExpr` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:143` | `CheckedRouterSelection` | data | yes | `checkedPredicate` | `predicate` | `!CheckedScalarExpr` | `(.predicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:144` | `CheckedRouterSelection` | data | yes | `checkedRecipient` | `recipient` | `!CheckedScalarExpr` | `(.recipient)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:145` | `CheckedRouterSelection` | data | yes | `checkedCommandFields` | `commandFields` | `!(Map Name CheckedScalarExpr)` | `(.commandFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:146` | `CheckedRouterSelection` | data | yes | `checkedTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:147` | `CheckedRouterSelection` | data | yes | `checkedCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:148` | `CheckedRouterSelection` | data | yes | `checkedLimit` | `limit` | `!Natural` | `(.limit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:149` | `CheckedRouterSelection` | data | yes | `checkedOrder` | `order` | `!CheckedSelectionOrder` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:150` | `CheckedRouterSelection` | data | yes | `checkedDedupe` | `dedupe` | `!CheckedSelectionDedupe` | `(.dedupe)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:151` | `CheckedRouterSelection` | data | yes | `checkedEmptyPolicy` | `emptyPolicy` | `!CheckedEmptySelectionPolicy` | `(.emptyPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:152` | `CheckedRouterSelection` | data | yes | `checkedFailurePolicy` | `failurePolicy` | `!CheckedSelectionFailurePolicy` | `(.failurePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:153` | `CheckedRouterSelection` | data | yes | `checkedRedeliveryPolicy` | `redeliveryPolicy` | `!CheckedRedeliveryPolicy` | `(.redeliveryPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:154` | `CheckedRouterSelection` | data | yes | `checkedPartialPolicy` | `partialPolicy` | `!CheckedPartialDispatchPolicy` | `(.partialPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:155` | `CheckedRouterSelection` | data | yes | `checkedFingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:156` | `CheckedRouterSelection` | data | yes | `checkedUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:193` | `RouterSelectionDiagnostic` | data | yes | `selectionDiagnosticLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `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:154` | `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:155` | `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:156` | `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:157` | `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:165` | `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:166` | `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:167` | `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:198` | `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:200` | `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:202` | `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:210` | `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:211` | `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:219` | `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:220` | `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:221` | `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:222` | `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:334` | `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:335` | `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:336` | `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:337` | `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:338` | `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:489` | `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:490` | `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:491` | `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:492` | `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:493` | `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:494` | `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:495` | `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:496` | `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:497` | `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:498` | `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:499` | `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:500` | `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:501` | `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:502` | `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:503` | `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:504` | `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:506` | `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:507` | `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:508` | `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:509` | `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:510` | `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:511` | `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:512` | `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:513` | `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:514` | `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:515` | `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:517` | `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:519` | `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:523` | `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:524` | `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:532` | `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:533` | `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:534` | `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:535` | `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:542` | `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:544` | `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:546` | `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:548` | `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:2457` | `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:2458` | `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:2473` | `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:2474` | `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:2475` | `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:2476` | `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:2477` | `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:2478` | `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:2479` | `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:2480` | `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:2481` | `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:2482` | `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:2483` | `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:2484` | `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:4282` | `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:4283` | `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:4284` | `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:8221` | `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:8222` | `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:8223` | `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:8224` | `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:8232` | `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:8233` | `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:8234` | `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:8370` | `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:8371` | `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:8447` | `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:8448` | `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)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:49` | `ScaffoldRecord` | data | yes | `recSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:50` | `ScaffoldRecord` | data | yes | `recLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:51` | `ScaffoldRecord` | data | yes | `recNamingEdition` | `namingEdition` | `!GeneratedHaskellNamingEdition` | `(.namingEdition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:52` | `ScaffoldRecord` | data | yes | `recModuleRoles` | `moduleRoles` | `![ScaffoldModuleRoleRow]` | `(.moduleRoles)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:53` | `ScaffoldRecord` | data | yes | `recFiles` | `files` | `![(ModuleKind, FilePath)]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `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/ScaffoldRun.hs:197` | `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:198` | `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:199` | `GeneratedHaskellEditionUse` | data | yes | `current` | `current` | `!Text` | `(.current)`, 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 | `replacement` | `replacement` | `!Text` | `(.replacement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:201` | `GeneratedHaskellEditionUse` | data | yes | `form` | `form` | `!HoleUseForm` | `(.form)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:214` | `GeneratedHaskellEditionImpact` | data | yes | `fromEdition` | `fromEdition` | `!HaskellName.GeneratedHaskellNamingEdition` | `(.fromEdition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:215` | `GeneratedHaskellEditionImpact` | data | yes | `generatedPaths` | `generatedPaths` | `![FilePath]` | `(.generatedPaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:216` | `GeneratedHaskellEditionImpact` | data | yes | `sidecarPaths` | `sidecarPaths` | `![FilePath]` | `(.sidecarPaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:217` | `GeneratedHaskellEditionImpact` | data | yes | `handOwnedUses` | `handOwnedUses` | `![GeneratedHaskellEditionUse]` | `(.handOwnedUses)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:222` | `PreparedGeneratedHaskellEditionMigration` | data | no | `impact` | `impact` | `!GeneratedHaskellEditionImpact` | `(.impact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:223` | `PreparedGeneratedHaskellEditionMigration` | data | no | `backups` | `backups` | `![(FilePath, FilePath)]` | `(.backups)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:224` | `PreparedGeneratedHaskellEditionMigration` | data | no | `reportPath` | `reportPath` | `!FilePath` | `(.reportPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:225` | `PreparedGeneratedHaskellEditionMigration` | data | no | `reportText` | `reportText` | `!Text` | `(.reportText)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:226` | `PreparedGeneratedHaskellEditionMigration` | data | no | `sourceMoves` | `sourceMoves` | `![SourceMove]` | `(.sourceMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:247` | `GeneratedArtifactImpact` | data | yes | `artifactCategory` | `category` | `!GeneratedArtifactCategory` | `(.category)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:248` | `GeneratedArtifactImpact` | data | yes | `artifactRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:249` | `GeneratedArtifactImpact` | data | yes | `artifactPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:250` | `GeneratedArtifactImpact` | data | yes | `artifactDisposition` | `disposition` | `!WriteDisposition` | `(.disposition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:260` | `StaleModule` | data | yes | `staleKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:261` | `StaleModule` | data | yes | `stalePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:262` | `StaleModule` | data | yes | `staleGeneratedEvidence` | `generatedEvidence` | `!(Maybe StaleGeneratedEvidence)` | `(.generatedEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:267` | `MappingDrift` | data | yes | `driftSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:268` | `MappingDrift` | data | yes | `driftPrevious` | `previous` | `!(Maybe MappingIdentity)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:269` | `MappingDrift` | data | yes | `driftCurrent` | `current` | `!(Maybe MappingIdentity)` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:274` | `SourceLanguageDrift` | data | yes | `languageDriftPrevious` | `previous` | `!SourceLanguage` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:275` | `SourceLanguageDrift` | data | yes | `languageDriftCurrent` | `current` | `!SourceLanguage` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:280` | `ScaffoldReport` | data | yes | `reportSpecPath` | `specPath` | `!FilePath` | `(.specPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:281` | `ScaffoldReport` | data | yes | `reportOutDir` | `outDir` | `!FilePath` | `(.outDir)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:282` | `ScaffoldReport` | data | yes | `reportContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:283` | `ScaffoldReport` | data | yes | `reportDispositions` | `dispositions` | `![(ScaffoldModule, WriteDisposition)]` | `(.dispositions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:284` | `ScaffoldReport` | data | yes | `reportInertNodes` | `inertNodes` | `![(Text, Text)]` | `(.inertNodes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:285` | `ScaffoldReport` | data | yes | `reportManifestPath` | `manifestPath` | `!FilePath` | `(.manifestPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:286` | `ScaffoldReport` | data | yes | `reportRecordPath` | `recordPath` | `!FilePath` | `(.recordPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:287` | `ScaffoldReport` | data | yes | `reportPreviousSpecPath` | `previousSpecPath` | `!(Maybe Text)` | `(.previousSpecPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:288` | `ScaffoldReport` | data | yes | `reportStale` | `stale` | `![StaleModule]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:289` | `ScaffoldReport` | data | yes | `reportConsumerPlan` | `consumerPlan` | `!ConsumerPlan` | `(.consumerPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:290` | `ScaffoldReport` | data | yes | `reportConstraintPlan` | `constraintPlan` | `![Text]` | `(.constraintPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:291` | `ScaffoldReport` | data | yes | `reportMappingDrift` | `mappingDrift` | `![MappingDrift]` | `(.mappingDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:292` | `ScaffoldReport` | data | yes | `reportQueryContractBaselineUnavailable` | `queryContractBaselineUnavailable` | `!Bool` | `(.queryContractBaselineUnavailable)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:293` | `ScaffoldReport` | data | yes | `reportQueryContractDrift` | `queryContractDrift` | `![QueryContractDrift]` | `(.queryContractDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:294` | `ScaffoldReport` | data | yes | `reportQueryContractMigrations` | `queryContractMigrations` | `![QueryContractMigration]` | `(.queryContractMigrations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:295` | `ScaffoldReport` | data | yes | `reportSemanticImpact` | `semanticImpact` | `!SemanticImpactReport` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:296` | `ScaffoldReport` | data | yes | `reportRouterSelectionDrift` | `routerSelectionDrift` | `![RouterSelectionDrift]` | `(.routerSelectionDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:297` | `ScaffoldReport` | data | yes | `processReactionCoordinationDrift` | `processReactionCoordinationDrift` | `![ProcessReactionDrift]` | `(.processReactionCoordinationDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:298` | `ScaffoldReport` | data | yes | `reportProjectionMappedImpact` | `projectionMappedImpact` | `!(Maybe ProjectionMappedImpact)` | `(.projectionMappedImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:299` | `ScaffoldReport` | data | yes | `reportGeneratedArtifactImpact` | `generatedArtifactImpact` | `![GeneratedArtifactImpact]` | `(.generatedArtifactImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:300` | `ScaffoldReport` | data | yes | `reportSourceLanguageDrift` | `sourceLanguageDrift` | `!(Maybe SourceLanguageDrift)` | `(.sourceLanguageDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:301` | `ScaffoldReport` | data | yes | `reportNewHoles` | `newHoles` | `![BindingHole]` | `(.newHoles)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:302` | `ScaffoldReport` | data | yes | `processReactionRows` | `processReactionRows` | `![ProcessReactionRecordRow]` | `(.processReactionRows)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:303` | `ScaffoldReport` | data | yes | `reportAddedBehavior` | `addedBehavior` | `![BehaviorRecordRow]` | `(.addedBehavior)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:304` | `ScaffoldReport` | data | yes | `reportRemovedBehavior` | `removedBehavior` | `![BehaviorRecordRow]` | `(.removedBehavior)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:305` | `ScaffoldReport` | data | yes | `reportObsoleteOutputHooks` | `obsoleteOutputHooks` | `![(Text, Text)]` | `(.obsoleteOutputHooks)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:306` | `ScaffoldReport` | data | yes | `reportConformancePackage` | `conformancePackage` | `!(Maybe ConformancePackageReport)` | `(.conformancePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:307` | `ScaffoldReport` | data | yes | `reportNameMoves` | `nameMoves` | `![SourceMove]` | `(.nameMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:308` | `ScaffoldReport` | data | yes | `reportSidecarMoves` | `sidecarMoves` | `![SidecarMove]` | `(.sidecarMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:313` | `QueryContractMigration` | data | yes | `qcmOwner` | `owner` | `!Text` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:314` | `QueryContractMigration` | data | yes | `path` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:315` | `QueryContractMigration` | data | yes | `qcmRequiredImport` | `requiredImport` | `!Text` | `(.requiredImport)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:63` | `EffectiveLanguageContract` | data | yes | `effectiveContractLanguageVersion` | `contractLanguageVersion` | `!LanguageVersion` | `(.contractLanguageVersion)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:64` | `EffectiveLanguageContract` | data | yes | `effectiveRuntimeProfile` | `runtimeProfile` | `!RuntimeSemanticsProfile` | `(.runtimeProfile)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:160` | `CheckedService` | data | no | `serviceLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk | `none` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:161` | `CheckedService` | data | no | `serviceSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk | `none` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:162` | `CheckedService` | data | no | `serviceTypeGraph` | `typeGraph` | `Either (NonEmpty TypeGraphError) TypeGraph` | `(.typeGraph)`, pattern, or construction | serialized/wire review risk | `none` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:163` | `CheckedService` | data | no | `serviceProjectionSupplies` | `projectionSupplies` | `ProjectionSupplyAnalysis` | `(.projectionSupplies)`, pattern, or construction | serialized/wire review risk | `none` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:100` | `MappedRoot` | data | yes | `mappedRootConsumer` | `consumer` | `!MappedConsumer` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:101` | `MappedRoot` | data | yes | `mappedRootKind` | `kind` | `!MappedRootKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:102` | `MappedRoot` | data | yes | `mappedRootUseSite` | `useSite` | `!UseSite` | `(.useSite)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:103` | `MappedRoot` | data | yes | `mappedRootDeclaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:111` | `MappedRootEvidence` | data | yes | `evidenceConsumer` | `consumer` | `!MappedConsumer` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:112` | `MappedRootEvidence` | data | yes | `evidenceRootKind` | `rootKind` | `!MappedRootKind` | `(.rootKind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:113` | `MappedRootEvidence` | data | yes | `evidencePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:114` | `MappedRootEvidence` | data | yes | `evidenceOperation` | `operation` | `!(Maybe Text)` | `(.operation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:141` | `SemanticImpact` | data | yes | `impactRoots` | `roots` | `![MappedRoot]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:142` | `SemanticImpact` | data | yes | `impactUsePaths` | `usePaths` | `!(Map MappedKey [UsePath])` | `(.usePaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:143` | `SemanticImpact` | data | yes | `impactAggregateDeclarations` | `aggregateDeclarations` | `!(Map MappedConsumer (Set MappedKey))` | `(.aggregateDeclarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:144` | `SemanticImpact` | data | yes | `impactDeclarationConsumers` | `declarationConsumers` | `!(Map MappedKey (Set MappedConsumer))` | `(.declarationConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:145` | `SemanticImpact` | data | yes | `impactDeclarationEvidence` | `declarationEvidence` | `!(Map MappedKey (Set MappedRootEvidence))` | `(.declarationEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:146` | `SemanticImpact` | data | yes | `impactDeclarationConsequences` | `declarationConsequences` | `!(Map MappedKey (Set MappedConsequence))` | `(.declarationConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:147` | `SemanticImpact` | data | yes | `impactServiceDeclarations` | `serviceDeclarations` | `!(Set MappedKey)` | `(.serviceDeclarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:148` | `SemanticImpact` | data | yes | `impactDeclarationIdentities` | `declarationIdentities` | `!(Map MappedKey Text)` | `(.declarationIdentities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:149` | `SemanticImpact` | data | yes | `impactUnsupportedProjectionSources` | `unsupportedProjectionSources` | `![UnsupportedProjectionSource]` | `(.unsupportedProjectionSources)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:159` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedConsumers` | `mappedConsumers` | `!(Map MappedKey (Set MappedConsumer))` | `(.mappedConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:160` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedEvidence` | `mappedEvidence` | `!(Maybe (Map MappedKey (Set MappedRootEvidence)))` | `(.mappedEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:161` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedConsequences` | `mappedConsequences` | `!(Maybe (Map MappedKey (Set MappedConsequence)))` | `(.mappedConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:162` | `SemanticImpactSnapshot` | data | yes | `snapshotServiceInventory` | `serviceInventory` | `!(Set MappedKey)` | `(.serviceInventory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:163` | `SemanticImpactSnapshot` | data | yes | `snapshotDeclarationIdentities` | `declarationIdentities` | `!(Map MappedKey Text)` | `(.declarationIdentities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:170` | `MappedImpactDelta` | data | yes | `impactDeclaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:171` | `MappedImpactDelta` | data | yes | `impactPreviousConsumers` | `previousConsumers` | `!(Set MappedConsumer)` | `(.previousConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:172` | `MappedImpactDelta` | data | yes | `impactCurrentConsumers` | `currentConsumers` | `!(Set MappedConsumer)` | `(.currentConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:173` | `MappedImpactDelta` | data | yes | `impactPreviousEvidence` | `previousEvidence` | `!(Maybe (Set MappedRootEvidence))` | `(.previousEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:174` | `MappedImpactDelta` | data | yes | `impactCurrentEvidence` | `currentEvidence` | `!(Maybe (Set MappedRootEvidence))` | `(.currentEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:175` | `MappedImpactDelta` | data | yes | `impactPreviousConsequences` | `previousConsequences` | `!(Maybe (Set MappedConsequence))` | `(.previousConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:176` | `MappedImpactDelta` | data | yes | `impactCurrentConsequences` | `currentConsequences` | `!(Maybe (Set MappedConsequence))` | `(.currentConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:177` | `MappedImpactDelta` | data | yes | `impactServiceConformance` | `serviceConformance` | `!Bool` | `(.serviceConformance)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:185` | `SemanticImpactReport` | data | yes | `semanticReportPrevious` | `previous` | `!(Maybe SemanticImpactSnapshot)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:186` | `SemanticImpactReport` | data | yes | `semanticReportCurrent` | `current` | `!SemanticImpactSnapshot` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:187` | `SemanticImpactReport` | data | yes | `semanticReportDeclarations` | `declarations` | `![MappedKey]` | `(.declarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:188` | `SemanticImpactReport` | data | yes | `semanticReportDeltas` | `deltas` | `![MappedImpactDelta]` | `(.deltas)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:514` | `SelectionEvidence` | data | no | `selectionEvidenceRoot` | `root` | `!MappedRoot` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:515` | `SelectionEvidence` | data | no | `selectionEvidencePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/ServiceHarness.hs:28` | `DuplicateServiceFactKey` | newtype | yes | `duplicateServiceFactKey` | `duplicateServiceFactKey` | `Text` | `(.duplicateServiceFactKey)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:48` | `SidecarMove` | data | yes | `sidecarOldPath` | `oldPath` | `!FilePath` | `(.oldPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:49` | `SidecarMove` | data | yes | `sidecarNewPath` | `newPath` | `!FilePath` | `(.newPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:50` | `SidecarMove` | data | yes | `sidecarBackupPath` | `backupPath` | `!(Maybe FilePath)` | `(.backupPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:51` | `SidecarMove` | data | yes | `sidecarMoveDisposition` | `moveDisposition` | `!SidecarMoveDisposition` | `(.moveDisposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:22` | `SourcePoint` | data | yes | `offset` | `offset` | `!Int` | `(.offset)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:23` | `SourcePoint` | data | yes | `line` | `line` | `!Int` | `(.line)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:24` | `SourcePoint` | data | yes | `column` | `column` | `!Int` | `(.column)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:38` | `SourceSpan` | data | yes | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:39` | `SourceSpan` | data | yes | `start` | `start` | `!SourcePoint` | `(.start)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:40` | `SourceSpan` | data | yes | `end` | `end` | `!SourcePoint` | `(.end)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:61` | `Located` | data | yes | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Functor, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Source.hs:62` | `Located` | data | yes | `value` | `value` | `!a` | `(.value)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Functor, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:67` | `IndexedSourcePosition` | data | no | `quality` | `quality` | `!SourcePositionQuality` | `(.quality)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:68` | `IndexedSourcePosition` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:73` | `SemanticSourceIndex` | newtype | no | `positions` | `positions` | `Map SourceSubject IndexedSourcePosition` | `(.positions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:79` | `ParsedSourceDocument` | data | yes | `documentParsedSource` | `parsedSource` | `!ParsedSource` | `(.parsedSource)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:80` | `ParsedSourceDocument` | data | yes | `documentSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:92` | `SourceIndexFailure` | data | yes | `failureCode` | `code` | `!SourceIndexFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:93` | `SourceIndexFailure` | data | yes | `failureSubject` | `subject` | `!(Maybe SourceSubject)` | `(.subject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:94` | `SourceIndexFailure` | data | yes | `failureSpan` | `span` | `!(Maybe SourceSpan)` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:95` | `SourceIndexFailure` | data | yes | `failureMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:82` | `ConformanceRendering` | data | no | `renderingContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:83` | `ConformanceRendering` | data | no | `renderingGraph` | `graph` | `!TypeGraph` | `(.graph)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:84` | `ConformanceRendering` | data | no | `renderingDeclarations` | `declarations` | `![ResolvedMappedDecl]` | `(.declarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:85` | `ConformanceRendering` | data | no | `nominals` | `nominals` | `![NominalLeaf]` | `(.nominals)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:86` | `ConformanceRendering` | data | no | `renderingProjections` | `projections` | `![StructuralProjection]` | `(.projections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:87` | `ConformanceRendering` | data | no | `renderingImportPlan` | `importPlan` | `!HaskellImportPlan` | `(.importPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:33` | `SurfaceSource` | data | yes | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:34` | `SurfaceSource` | data | yes | `language` | `language` | `!SourceLanguage` | `(.language)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:35` | `SurfaceSource` | data | yes | `preamble` | `preamble` | `!(Maybe (Located SourceLanguage))` | `(.preamble)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:36` | `SurfaceSource` | data | yes | `spec` | `spec` | `!(Located SurfaceSpec)` | `(.spec)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:43` | `SurfaceSpec` | data | yes | `context` | `context` | `!(Located Text)` | `(.context)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:44` | `SurfaceSpec` | data | yes | `moduleRoot` | `moduleRoot` | `!(Maybe (Located Text))` | `(.moduleRoot)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:45` | `SurfaceSpec` | data | yes | `layout` | `layout` | `!(Maybe (Located Placement))` | `(.layout)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:46` | `SurfaceSpec` | data | yes | `items` | `items` | `![Located SurfaceTopItem]` | `(.items)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:47` | `SurfaceSpec` | data | yes | `elements` | `elements` | `![Located SurfaceElement]` | `(.elements)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:39` | `TransitionFamilyKey` | data | yes | `familyMode` | `mode` | `!TransitionMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:40` | `TransitionFamilyKey` | data | yes | `familySource` | `source` | `!Name` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:41` | `TransitionFamilyKey` | data | yes | `familyCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:53` | `TransitionFamilyDelta` | data | yes | `familyKey` | `familyKey` | `!TransitionFamilyKey` | `(.familyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:54` | `TransitionFamilyDelta` | data | yes | `oldRemainder` | `oldRemainder` | `![Transition]` | `(.oldRemainder)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:55` | `TransitionFamilyDelta` | data | yes | `newRemainder` | `newRemainder` | `![Transition]` | `(.newRemainder)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:61` | `ReplayBodyKey` | newtype | yes | `unReplayBodyKey` | `unReplayBodyKey` | `Text` | explicit `unReplayBodyKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:76` | `ReplayBodyDelta` | data | yes | `bodyFamilyKey` | `bodyFamilyKey` | `!TransitionFamilyKey` | `(.bodyFamilyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:77` | `ReplayBodyDelta` | data | yes | `bodyKey` | `bodyKey` | `!ReplayBodyKey` | `(.bodyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:78` | `ReplayBodyDelta` | data | yes | `oldBodyMembers` | `oldBodyMembers` | `![Transition]` | `(.oldBodyMembers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:79` | `ReplayBodyDelta` | data | yes | `newBodyMembers` | `newBodyMembers` | `![Transition]` | `(.newBodyMembers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:80` | `ReplayBodyDelta` | data | yes | `bodyStatus` | `bodyStatus` | `!ReplayBodyStatus` | `(.bodyStatus)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:92` | `QualifiedValueName` | newtype | yes | `unQualifiedValueName` | `unQualifiedValueName` | `Text` | explicit `unQualifiedValueName` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:98` | `CanonicalTypeId` | newtype | yes | `unCanonicalTypeId` | `unCanonicalTypeId` | `Text` | explicit `unCanonicalTypeId` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:104` | `BindingVersion` | newtype | yes | `unBindingVersion` | `unBindingVersion` | `Text` | explicit `unBindingVersion` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:110` | `CodecIdentity` | newtype | yes | `unCodecIdentity` | `unCodecIdentity` | `Text` | explicit `unCodecIdentity` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:116` | `CodecVersion` | newtype | yes | `unCodecVersion` | `unCodecVersion` | `Text` | explicit `unCodecVersion` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:171` | `ConsumerNominalBinding` | data | yes | `haskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:172` | `ConsumerNominalBinding` | data | yes | `binding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:173` | `ConsumerNominalBinding` | data | yes | `bindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:174` | `ConsumerNominalBinding` | data | yes | `canonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:175` | `ConsumerNominalBinding` | data | yes | `fixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:176` | `ConsumerNominalBinding` | data | yes | `initial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:192` | `NominalLeaf` | data | yes | `name` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:193` | `NominalLeaf` | data | yes | `kind` | `kind` | `!NominalLeafKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:194` | `NominalLeaf` | data | yes | `ownership` | `ownership` | `!NominalLeafOwnership` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:195` | `NominalLeaf` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:209` | `NominalLeafError` | newtype | yes | `nominalLeafIssues` | `nominalLeafIssues` | `NonEmpty NominalLeafIssue` | `(.nominalLeafIssues)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:320` | `StructuralDecl` | data | yes | `sdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:321` | `StructuralDecl` | data | yes | `sdHaskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:322` | `StructuralDecl` | data | yes | `sdBinding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:323` | `StructuralDecl` | data | yes | `sdBindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:324` | `StructuralDecl` | data | yes | `sdCanonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:325` | `StructuralDecl` | data | yes | `sdFixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:326` | `StructuralDecl` | data | yes | `sdInitial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:327` | `StructuralDecl` | data | yes | `sdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:332` | `OpaqueDecl` | data | yes | `odName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:333` | `OpaqueDecl` | data | yes | `odHaskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:334` | `OpaqueDecl` | data | yes | `odCodecIdentity` | `codecIdentity` | `!CodecIdentity` | `(.codecIdentity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:335` | `OpaqueDecl` | data | yes | `odCodecVersion` | `codecVersion` | `!CodecVersion` | `(.codecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:336` | `OpaqueDecl` | data | yes | `odFixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:337` | `OpaqueDecl` | data | yes | `odInitial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:338` | `OpaqueDecl` | data | yes | `odLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:394` | `MappedKey` | newtype | yes | `unMappedKey` | `unMappedKey` | `Name` | explicit `unMappedKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:417` | `ResolvedWireField` | data | yes | `rwfHaskell` | `haskell` | `!Name` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:418` | `ResolvedWireField` | data | yes | `rwfKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:419` | `ResolvedWireField` | data | yes | `rwfType` | `valueType` | `!ResolvedTypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:420` | `ResolvedWireField` | data | yes | `rwfPresence` | `presence` | `!Presence` | `(.presence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:421` | `ResolvedWireField` | data | yes | `rwfOnMissing` | `onMissing` | `!(Maybe OnMissing)` | `(.onMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:422` | `ResolvedWireField` | data | yes | `rwfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:427` | `ResolvedWireArm` | data | yes | `rwaCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:428` | `ResolvedWireArm` | data | yes | `rwaTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:429` | `ResolvedWireArm` | data | yes | `rwaPayload` | `payload` | `!(Maybe ResolvedTypeExpr)` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:430` | `ResolvedWireArm` | data | yes | `rwaLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:465` | `UseSite` | data | yes | `root` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:466` | `UseSite` | data | yes | `mappedKey` | `mappedKey` | `!MappedKey` | `(.mappedKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:471` | `NominalRootSite` | data | yes | `root` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:472` | `NominalRootSite` | data | yes | `nominal` | `nominal` | `!Name` | `(.nominal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:473` | `NominalRootSite` | data | yes | `segments` | `segments` | `![PathSeg]` | `(.segments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:489` | `UsePath` | data | yes | `upRoot` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:490` | `UsePath` | data | yes | `upSegments` | `segments` | `![PathSeg]` | `(.segments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:510` | `TypeGraph` | data | yes | `tgDeclarations` | `declarations` | `!(Map MappedKey ResolvedMappedDecl)` | `(.declarations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:511` | `TypeGraph` | data | yes | `tgReachability` | `reachability` | `!(Map MappedKey (Set MappedKey))` | `(.reachability)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:512` | `TypeGraph` | data | yes | `nominalLeaves` | `nominalLeaves` | `!(Map Name NominalLeaf)` | `(.nominalLeaves)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:513` | `TypeGraph` | data | yes | `unsupportedNominalLeafKinds` | `unsupportedNominalLeafKinds` | `!(Map Name Text)` | `(.unsupportedNominalLeafKinds)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:514` | `TypeGraph` | data | yes | `nominalReachability` | `nominalReachability` | `!(Map MappedKey (Set Name))` | `(.nominalReachability)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:515` | `TypeGraph` | data | yes | `tgUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:516` | `TypeGraph` | data | yes | `nominalRootSites` | `nominalRootSites` | `![NominalRootSite]` | `(.nominalRootSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:517` | `TypeGraph` | data | yes | `tgRootSegments` | `rootSegments` | `!(Map UseSite [PathSeg])` | `(.rootSegments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:518` | `TypeGraph` | data | yes | `tgDerivedMappedConsumers` | `derivedMappedConsumers` | `![DerivedMappedConsumer]` | `(.derivedMappedConsumers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:519` | `TypeGraph` | data | yes | `tgReplayableProjectionGroups` | `replayableProjectionGroups` | `!(Map DerivedMappedConsumer Name)` | `(.replayableProjectionGroups)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:520` | `TypeGraph` | data | yes | `tgProjectionOperationalIdentities` | `projectionOperationalIdentities` | `!(Map DerivedMappedConsumer Text)` | `(.projectionOperationalIdentities)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:521` | `TypeGraph` | data | yes | `tgUnsupportedProjectionSources` | `unsupportedProjectionSources` | `![UnsupportedProjectionSource]` | `(.unsupportedProjectionSources)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1142` | `TypeExprAlgebra` | data | yes | `onText` | `onText` | `a` | `(.onText)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1143` | `TypeExprAlgebra` | data | yes | `onInt` | `onInt` | `a` | `(.onInt)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1144` | `TypeExprAlgebra` | data | yes | `onInteger` | `onInteger` | `a` | `(.onInteger)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1145` | `TypeExprAlgebra` | data | yes | `onBool` | `onBool` | `a` | `(.onBool)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1146` | `TypeExprAlgebra` | data | yes | `onNatural` | `onNatural` | `a` | `(.onNatural)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1147` | `TypeExprAlgebra` | data | yes | `onTime` | `onTime` | `a` | `(.onTime)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1148` | `TypeExprAlgebra` | data | yes | `onJson` | `onJson` | `a` | `(.onJson)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1149` | `TypeExprAlgebra` | data | yes | `onOptional` | `onOptional` | `a -> a` | `(.onOptional)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1150` | `TypeExprAlgebra` | data | yes | `onList` | `onList` | `a -> a` | `(.onList)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1151` | `TypeExprAlgebra` | data | yes | `onMap` | `onMap` | `a -> a` | `(.onMap)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1152` | `TypeExprAlgebra` | data | yes | `onKeyedMap` | `onKeyedMap` | `NominalLeaf -> a -> a` | `(.onKeyedMap)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1153` | `TypeExprAlgebra` | data | yes | `onRef` | `onRef` | `MappedKey -> a` | `(.onRef)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1154` | `TypeExprAlgebra` | data | yes | `onNominal` | `onNominal` | `NominalLeaf -> a` | `(.onNominal)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1174` | `MappedShapeAlgebra` | data | yes | `onRecord` | `onRecord` | `Name -> UnknownFields -> [ResolvedWireField] -> a` | `(.onRecord)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1175` | `MappedShapeAlgebra` | data | yes | `onEnum` | `onEnum` | `[WireEnum] -> a` | `(.onEnum)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1176` | `MappedShapeAlgebra` | data | yes | `onUnion` | `onUnion` | `UnionEncoding -> [ResolvedWireArm] -> a` | `(.onUnion)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1186` | `MappedDeclAlgebra` | data | yes | `onStructuralDecl` | `onStructuralDecl` | `StructuralDecl -> ResolvedMappedShape -> a` | `(.onStructuralDecl)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1187` | `MappedDeclAlgebra` | data | yes | `onOpaqueDecl` | `onOpaqueDecl` | `OpaqueDecl -> a` | `(.onOpaqueDecl)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:769` | `Diagnostic` | data | yes | `line` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:770` | `Diagnostic` | data | yes | `severity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:771` | `Diagnostic` | data | yes | `code` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:772` | `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:773` | `Diagnostic` | data | yes | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1664` | `NullabilityFacts` | data | no | `nfTopNull` | `topNull` | `!Bool` | `(.topNull)`, pattern, or construction | rendered/canonical output | `none` |
-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1665` | `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)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:145` | `WorkspaceManifest` | data | yes | `wmfRuntimePackageLoc` | `runtimePackageLoc` | `!Loc` | `(.runtimePackageLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:147` | `WorkspaceManifest` | data | yes | `wmfModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:149` | `WorkspaceManifest` | data | yes | `wmfModuleRootLoc` | `moduleRootLoc` | `!Loc` | `(.moduleRootLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:151` | `WorkspaceManifest` | data | yes | `wmfLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:153` | `WorkspaceManifest` | data | yes | `wmfLayoutLoc` | `layoutLoc` | `!Loc` | `(.layoutLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:155` | `WorkspaceManifest` | data | yes | `wmfMembers` | `members` | `!(NonEmpty WorkspaceMemberRef)` | `(.members)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:162` | `WorkspaceMemberRef` | data | yes | `wmrPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:163` | `WorkspaceMemberRef` | data | yes | `wmrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:545` | `WorkspaceLocation` | data | yes | `wlFile` | `file` | `!WorkspaceFile` | `(.file)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:546` | `WorkspaceLocation` | data | yes | `wlLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:547` | `WorkspaceLocation` | data | yes | `wlRole` | `role` | `!Text` | `(.role)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:557` | `WorkspaceDiagnostic` | data | yes | `wdLocations` | `locations` | `!(NonEmpty WorkspaceLocation)` | `(.locations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:558` | `WorkspaceDiagnostic` | data | yes | `wdSeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:559` | `WorkspaceDiagnostic` | data | yes | `wdCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:560` | `WorkspaceDiagnostic` | data | yes | `wdSourceLanguageCause` | `sourceLanguageCause` | `!(Maybe SourceLanguageDiagnostic)` | `(.sourceLanguageCause)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:561` | `WorkspaceDiagnostic` | data | yes | `wdMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:628` | `LineMap` | newtype | yes | `lmRanges` | `lmRanges` | `[(Int, Int, FilePath)]` | `(.lmRanges)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:637` | `OwnershipIndex` | data | yes | `oiDeclarations` | `declarations` | `!(Map (Text, Name) (FilePath, Loc))` | `(.declarations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:638` | `OwnershipIndex` | data | yes | `oiNodes` | `nodes` | `!(Map (Text, Name) (FilePath, Loc))` | `(.nodes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:653` | `WorkspaceMember` | data | yes | `wmPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:655` | `WorkspaceMember` | data | yes | `wmSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:657` | `WorkspaceMember` | data | yes | `wmSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:660` | `WorkspaceMember` | data | yes | `wmSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:662` | `WorkspaceMember` | data | yes | `wmLineBase` | `lineBase` | `!Int` | `(.lineBase)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:664` | `WorkspaceMember` | data | yes | `wmLineCount` | `lineCount` | `!Int` | `(.lineCount)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:680` | `WorkspaceSpec` | data | yes | `wsService` | `service` | `!Text` | `(.service)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:681` | `WorkspaceSpec` | data | yes | `wsManifestPath` | `manifestPath` | `!FilePath` | `(.manifestPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:684` | `WorkspaceSpec` | data | yes | `wsLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:686` | `WorkspaceSpec` | data | yes | `wsContext` | `context` | `!Name` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:687` | `WorkspaceSpec` | data | yes | `wsRuntimePackage` | `runtimePackage` | `!(Maybe RuntimePackageName)` | `(.runtimePackage)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:688` | `WorkspaceSpec` | data | yes | `wsModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:689` | `WorkspaceSpec` | data | yes | `wsLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:691` | `WorkspaceSpec` | data | yes | `wsMembers` | `members` | `![WorkspaceMember]` | `(.members)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:692` | `WorkspaceSpec` | data | yes | `wsMergedSpec` | `mergedSpec` | `!Spec` | `(.mergedSpec)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:694` | `WorkspaceSpec` | data | yes | `wsSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:695` | `WorkspaceSpec` | data | yes | `wsLineMap` | `lineMap` | `!LineMap` | `(.lineMap)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:696` | `WorkspaceSpec` | data | yes | `wsOwnership` | `ownership` | `!OwnershipIndex` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
-| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:1309` | `ContentSource` | newtype | yes | `csRead` | `csRead` | `FilePath -> IO (Either Text Text)` | `(.csRead)`, pattern, or construction | rendered/canonical output | `none` |
+Inventory: 313 record-owning declarations, 1546 fields, 1499 strict fields, and 1410 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/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)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:94` | `BehaviorExactLocation` | data | yes | `exactSourceColumn` | `sourceColumn` | `!Int` | `(.sourceColumn)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:99` | `BehaviorRequirement` | data | yes | `requirementKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:100` | `BehaviorRequirement` | data | yes | `requirementOrigin` | `origin` | `!RequirementOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:101` | `BehaviorRequirement` | data | yes | `requirementKind` | `kind` | `!ObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:102` | `BehaviorRequirement` | data | yes | `requirementEvidence` | `evidence` | `!EvidenceLevel` | `(.evidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:103` | `BehaviorRequirement` | data | yes | `requirementGuardCoverage` | `guardCoverage` | `!GuardCoverage` | `(.guardCoverage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:104` | `BehaviorRequirement` | data | yes | `requirementContext` | `context` | `!Name` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:105` | `BehaviorRequirement` | data | yes | `requirementAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:106` | `BehaviorRequirement` | data | yes | `requirementSource` | `source` | `!Name` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:107` | `BehaviorRequirement` | data | yes | `requirementCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:108` | `BehaviorRequirement` | data | yes | `requirementTarget` | `target` | `!(Maybe Name)` | `(.target)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:109` | `BehaviorRequirement` | data | yes | `requirementMode` | `mode` | `!(Maybe TransitionMode)` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:110` | `BehaviorRequirement` | data | yes | `requirementEvents` | `events` | `![Name]` | `(.events)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:111` | `BehaviorRequirement` | data | yes | `requirementOutputs` | `outputs` | `![OutputEvidence]` | `(.outputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:112` | `BehaviorRequirement` | data | yes | `requirementDomainOutcome` | `domainOutcome` | `!(Maybe TransitionOutcome)` | `(.domainOutcome)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:113` | `BehaviorRequirement` | data | yes | `requirementLocation` | `location` | `!Loc` | `(.location)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:114` | `BehaviorRequirement` | data | yes | `requirementExactLocation` | `exactLocation` | `!(Maybe BehaviorExactLocation)` | `(.exactLocation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:115` | `BehaviorRequirement` | data | yes | `requirementOwner` | `owner` | `!(Maybe FilePath)` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:116` | `BehaviorRequirement` | data | yes | `requirementCanonical` | `canonical` | `!Text` | `(.canonical)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:124` | `BehaviorRecordRow` | data | yes | `behaviorRecordKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:125` | `BehaviorRecordRow` | data | yes | `behaviorRecordKind` | `kind` | `!ObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:126` | `BehaviorRecordRow` | data | yes | `behaviorRecordEvidence` | `evidence` | `!EvidenceLevel` | `(.evidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:127` | `BehaviorRecordRow` | data | yes | `behaviorRecordAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:128` | `BehaviorRecordRow` | data | yes | `behaviorRecordSource` | `source` | `!Name` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:129` | `BehaviorRecordRow` | data | yes | `behaviorRecordCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:130` | `BehaviorRecordRow` | data | yes | `behaviorRecordOwner` | `owner` | `!(Maybe FilePath)` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:131` | `BehaviorRecordRow` | data | yes | `behaviorRecordOutputs` | `outputs` | `![OutputEvidence]` | `(.outputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:143` | `BehaviorObligationsReport` | data | yes | `behaviorSubject` | `subject` | `!FilePath` | `(.subject)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:144` | `BehaviorObligationsReport` | data | yes | `behaviorWorkspaceService` | `workspaceService` | `!(Maybe Text)` | `(.workspaceService)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:145` | `BehaviorObligationsReport` | data | yes | `behaviorRequirements` | `requirements` | `![BehaviorRequirement]` | `(.requirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:38` | `BehaviorSourceFailure` | data | yes | `failureCode` | `code` | `!BehaviorSourceFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:39` | `BehaviorSourceFailure` | data | yes | `failureKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:40` | `BehaviorSourceFailure` | data | yes | `failureOrigin` | `origin` | `!RequirementOrigin` | `(.origin)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:41` | `BehaviorSourceFailure` | data | yes | `failureAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:42` | `BehaviorSourceFailure` | data | yes | `failureState` | `state` | `!Text` | `(.state)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:43` | `BehaviorSourceFailure` | data | yes | `failureCommand` | `command` | `!Text` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:44` | `BehaviorSourceFailure` | data | yes | `failureSourceSubject` | `sourceSubject` | `!SourceSubject` | `(.sourceSubject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:45` | `BehaviorSourceFailure` | data | yes | `failureSpan` | `span` | `!(Maybe SourceSpan)` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:46` | `BehaviorSourceFailure` | data | yes | `failureMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:51` | `BehaviorSourceEntry` | data | yes | `behaviorSourceKey` | `key` | `!BehaviorKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:52` | `BehaviorSourceEntry` | data | yes | `behaviorSourceFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:53` | `BehaviorSourceEntry` | data | yes | `behaviorSourceLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/BehaviorSourceMap.hs:54` | `BehaviorSourceEntry` | data | yes | `behaviorSourceColumn` | `column` | `!Int` | `(.column)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:45` | `CheckReportLanguage` | data | yes | `reportSourceForm` | `sourceForm` | `!Text` | `(.sourceForm)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:46` | `CheckReportLanguage` | data | yes | `reportDeclaredLanguageVersion` | `declaredLanguageVersion` | `!(Maybe LanguageVersion)` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:47` | `CheckReportLanguage` | data | yes | `reportEffectiveLanguageVersion` | `effectiveLanguageVersion` | `!LanguageVersion` | `(.effectiveLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:48` | `CheckReportLanguage` | data | yes | `reportRuntimeSemantics` | `runtimeSemantics` | `!Text` | `(.runtimeSemantics)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:49` | `CheckReportLanguage` | data | yes | `reportLanguageSupport` | `languageSupport` | `!LanguageSupport` | `(.languageSupport)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:50` | `CheckReportLanguage` | data | yes | `reportStable` | `stable` | `!Bool` | `(.stable)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:55` | `CheckReportEnforcement` | data | yes | `reportMinLanguage` | `minLanguage` | `!(Maybe LanguageVersion)` | `(.minLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:56` | `CheckReportEnforcement` | data | yes | `reportDenyWarnings` | `denyWarnings` | `!Bool` | `(.denyWarnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:57` | `CheckReportEnforcement` | data | yes | `reportDenyCodes` | `denyCodes` | `![DiagnosticCode]` | `(.denyCodes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:62` | `CheckReportRelated` | data | yes | `relatedFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:63` | `CheckReportRelated` | data | yes | `relatedLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:64` | `CheckReportRelated` | data | yes | `relatedNote` | `note` | `!Text` | `(.note)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:69` | `CheckReportEntry` | data | yes | `entryCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:70` | `CheckReportEntry` | data | yes | `entrySeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:71` | `CheckReportEntry` | data | yes | `entryFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:72` | `CheckReportEntry` | data | yes | `entryLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:73` | `CheckReportEntry` | data | yes | `entryMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:74` | `CheckReportEntry` | data | yes | `entryDenied` | `denied` | `!Bool` | `(.denied)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:75` | `CheckReportEntry` | data | yes | `entryRelated` | `related` | `![CheckReportRelated]` | `(.related)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:80` | `CheckReportSummary` | data | yes | `summaryErrors` | `errors` | `!Int` | `(.errors)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:81` | `CheckReportSummary` | data | yes | `summaryWarnings` | `warnings` | `!Int` | `(.warnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:82` | `CheckReportSummary` | data | yes | `summaryDeniedWarnings` | `deniedWarnings` | `!Int` | `(.deniedWarnings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:87` | `CheckReportMember` | data | yes | `memberPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:88` | `CheckReportMember` | data | yes | `memberSourceForm` | `sourceForm` | `!Text` | `(.sourceForm)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:89` | `CheckReportMember` | data | yes | `memberDeclaredLanguageVersion` | `declaredLanguageVersion` | `!(Maybe LanguageVersion)` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:94` | `CheckReportProcessReaction` | data | yes | `process` | `process` | `!Text` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:95` | `CheckReportProcessReaction` | 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/CheckReport.hs:96` | `CheckReportProcessReaction` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:97` | `CheckReportProcessReaction` | data | yes | `fingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:98` | `CheckReportProcessReaction` | 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/CheckReport.hs:106` | `CheckReport` | data | no | `reportKind` | `kind` | `!CheckReportKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:107` | `CheckReport` | data | no | `reportSubject` | `subject` | `!FilePath` | `(.subject)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:111` | `CheckReport` | data | no | `reportLanguage` | `language` | `!(Maybe CheckReportLanguage)` | `(.language)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:112` | `CheckReport` | data | no | `reportEnforcement` | `enforcement` | `!CheckReportEnforcement` | `(.enforcement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:113` | `CheckReport` | data | no | `reportDiagnostics` | `diagnostics` | `![CheckReportEntry]` | `(.diagnostics)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:114` | `CheckReport` | data | no | `reportSummary` | `summary` | `!CheckReportSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:115` | `CheckReport` | data | no | `reportOk` | `ok` | `!Bool` | `(.ok)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:116` | `CheckReport` | data | no | `reportMembers` | `members` | `![CheckReportMember]` | `(.members)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CheckReport.hs:117` | `CheckReport` | data | no | `processReactions` | `processReactions` | `![CheckReportProcessReaction]` | `(.processReactions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:70` | `JsonPointer` | newtype | yes | `unJsonPointer` | `unJsonPointer` | `Text` | explicit `unJsonPointer` positional function | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:85` | `HistoricalCodec` | data | yes | `hcIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:86` | `HistoricalCodec` | data | yes | `hcVersion` | `version` | `!Text` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:87` | `HistoricalCodec` | data | yes | `hcEncode` | `encode` | `!(a -> Value)` | `(.encode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:88` | `HistoricalCodec` | data | yes | `hcDecode` | `decode` | `!(Value -> Either Text a)` | `(.decode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:93` | `CompareObservation` | data | yes | `coCaseName` | `caseName` | `!Text` | `(.caseName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:94` | `CompareObservation` | data | yes | `coHistoricalValue` | `historicalValue` | `!Value` | `(.historicalValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:95` | `CompareObservation` | data | yes | `coGeneratedValue` | `generatedValue` | `!Value` | `(.generatedValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:98` | `CompareObservation` | data | yes | `coFixturePath` | `fixturePath` | `!FilePath` | `(.fixturePath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:99` | `CompareObservation` | data | yes | `coInputValue` | `inputValue` | `!Value` | `(.inputValue)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:100` | `CompareObservation` | data | yes | `coHistoricalDecode` | `historicalDecode` | `!DecodeOutcome` | `(.historicalDecode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:101` | `CompareObservation` | data | yes | `coGeneratedDecode` | `generatedDecode` | `!DecodeOutcome` | `(.generatedDecode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:124` | `DeclaredBranch` | data | yes | `dbOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:125` | `DeclaredBranch` | data | yes | `dbPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:126` | `DeclaredBranch` | data | yes | `dbKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:131` | `ObservedBranch` | data | yes | `obOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:132` | `ObservedBranch` | data | yes | `obPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:133` | `ObservedBranch` | data | yes | `obKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:138` | `CoverageGap` | data | yes | `cgOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:139` | `CoverageGap` | data | yes | `cgPointer` | `pointer` | `!JsonPointer` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:140` | `CoverageGap` | data | yes | `cgKind` | `kind` | `!BranchKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:157` | `BranchField` | data | yes | `bfWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:158` | `BranchField` | data | yes | `bfPresenceOptional` | `presenceOptional` | `!Bool` | `(.presenceOptional)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:159` | `BranchField` | data | yes | `bfSchema` | `schema` | `!BranchSchema` | `(.schema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:164` | `BranchArm` | data | yes | `baWireTag` | `wireTag` | `!Text` | `(.wireTag)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:165` | `BranchArm` | data | yes | `baPayloadSchema` | `payloadSchema` | `!(Maybe BranchSchema)` | `(.payloadSchema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:170` | `CompareProvenance` | data | yes | `cpHistoricalCodecIdentity` | `historicalCodecIdentity` | `!Text` | `(.historicalCodecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:171` | `CompareProvenance` | data | yes | `cpHistoricalCodecVersion` | `historicalCodecVersion` | `!Text` | `(.historicalCodecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:172` | `CompareProvenance` | data | yes | `cpCanonicalType` | `canonicalType` | `!CanonicalTypeId` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:173` | `CompareProvenance` | data | yes | `cpBindingSymbol` | `bindingSymbol` | `!QualifiedValueName` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:174` | `CompareProvenance` | data | yes | `cpBindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:175` | `CompareProvenance` | data | yes | `cpWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:180` | `ClassifiedObservation` | data | yes | `classifiedOrigin` | `origin` | `!FixtureOrigin` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:181` | `ClassifiedObservation` | data | yes | `classifiedName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:182` | `ClassifiedObservation` | data | yes | `classifiedVerdict` | `verdict` | `!FixtureVerdict` | `(.verdict)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:187` | `CompareReport` | data | yes | `crProvenance` | `provenance` | `!CompareProvenance` | `(.provenance)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:188` | `CompareReport` | data | yes | `crObservations` | `observations` | `![ClassifiedObservation]` | `(.observations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:189` | `CompareReport` | data | yes | `crInputIssues` | `inputIssues` | `![CompareInputIssue]` | `(.inputIssues)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:190` | `CompareReport` | data | yes | `crCoverageGaps` | `coverageGaps` | `![CoverageGap]` | `(.coverageGaps)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:191` | `CompareReport` | data | yes | `crAuthority` | `authority` | `!Text` | `(.authority)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:196` | `ReportWriteError` | data | yes | `reportWritePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/CodecCompare.hs:197` | `ReportWriteError` | data | yes | `reportWriteMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:58` | `ConformanceFile` | data | yes | `conformanceFilePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:59` | `ConformanceFile` | data | yes | `conformanceFileText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:60` | `ConformanceFile` | data | yes | `conformanceFileKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:65` | `ConformancePackagePlan` | data | yes | `cppServiceKey` | `serviceKey` | `!ConformanceServiceKey` | `(.serviceKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:66` | `ConformancePackagePlan` | data | yes | `cppDirectory` | `directory` | `!FilePath` | `(.directory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:67` | `ConformancePackagePlan` | data | yes | `cppPackageName` | `packageName` | `!Text` | `(.packageName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:68` | `ConformancePackagePlan` | data | yes | `cppRuntimePackage` | `runtimePackage` | `!RuntimePackageName` | `(.runtimePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:69` | `ConformancePackagePlan` | data | yes | `cppFacadeModule` | `facadeModule` | `!Text` | `(.facadeModule)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:70` | `ConformancePackagePlan` | data | yes | `cppFiles` | `files` | `![ConformanceFile]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:78` | `DuplicateFactKey` | data | yes | `duplicateFactSide` | `side` | `!ConformanceFactSide` | `(.side)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:79` | `DuplicateFactKey` | data | yes | `duplicateFactKey` | `key` | `!String` | `(.key)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:101` | `ConformancePackageRecord` | data | yes | `cprSchema` | `schema` | `!Int` | `(.schema)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:102` | `ConformancePackageRecord` | data | yes | `cprServiceKey` | `serviceKey` | `!ConformanceServiceKey` | `(.serviceKey)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:103` | `ConformancePackageRecord` | data | yes | `cprRuntimePackage` | `runtimePackage` | `!RuntimePackageName` | `(.runtimePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:104` | `ConformancePackageRecord` | data | yes | `cprFacadeModule` | `facadeModule` | `!Text` | `(.facadeModule)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:105` | `ConformancePackageRecord` | data | yes | `cprFiles` | `files` | `![(ModuleKind, FilePath)]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:113` | `ConformanceStaleFile` | data | yes | `conformanceStaleKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:114` | `ConformanceStaleFile` | data | yes | `conformanceStalePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:115` | `ConformanceStaleFile` | data | yes | `conformanceStaleBannerPresent` | `bannerPresent` | `!(Maybe Bool)` | `(.bannerPresent)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:120` | `PreparedConformancePackage` | data | no | `preparedRoot` | `root` | `!FilePath` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:121` | `PreparedConformancePackage` | data | no | `preparedPlan` | `plan` | `!ConformancePackagePlan` | `(.plan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:122` | `PreparedConformancePackage` | data | no | `preparedStale` | `stale` | `![ConformanceStaleFile]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:127` | `ConformancePackageReport` | data | yes | `conformanceReportRoot` | `root` | `!FilePath` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:128` | `ConformancePackageReport` | data | yes | `conformanceReportPlan` | `plan` | `!ConformancePackagePlan` | `(.plan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:129` | `ConformancePackageReport` | data | yes | `conformanceReportDispositions` | `dispositions` | `![(ConformanceFile, ConformanceWriteDisposition)]` | `(.dispositions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:130` | `ConformancePackageReport` | data | yes | `conformanceReportStale` | `stale` | `![ConformanceStaleFile]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:388` | `ConformanceFileRow` | data | no | `conformanceRowKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConformancePackage.hs:389` | `ConformanceFileRow` | data | no | `conformanceRowPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:27` | `HaskellTypeOccurrence` | newtype | yes | `unHaskellTypeOccurrence` | `unHaskellTypeOccurrence` | `Text` | explicit `unHaskellTypeOccurrence` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:38` | `ImportRequirement` | data | yes | `package` | `package` | `!Text` | `(.package)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:39` | `ImportRequirement` | data | yes | `moduleName` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:40` | `ImportRequirement` | data | yes | `occurrence` | `occurrence` | `!Text` | `(.occurrence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:45` | `ConsumerTypePlan` | data | yes | `haskellType` | `haskellType` | `!HaskellTypeOccurrence` | `(.haskellType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:46` | `ConsumerTypePlan` | data | yes | `imports` | `imports` | `![ImportRequirement]` | `(.imports)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:47` | `ConsumerTypePlan` | data | yes | `dependencies` | `dependencies` | `!(Set MappedKey)` | `(.dependencies)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:48` | `ConsumerTypePlan` | data | yes | `nominalDependencies` | `nominalDependencies` | `!(Set Text)` | `(.nominalDependencies)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:162` | `RenderedType` | data | no | `rendered` | `rendered` | `!Text` | `(.rendered)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:163` | `RenderedType` | data | no | `precedence` | `precedence` | `!TypePrecedence` | `(.precedence)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:164` | `RenderedType` | data | no | `requirements` | `requirements` | `!(Set ImportRequirement)` | `(.requirements)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:165` | `RenderedType` | data | no | `mappedDependencies` | `mappedDependencies` | `!(Set MappedKey)` | `(.mappedDependencies)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ConsumerTypePlan.hs:166` | `RenderedType` | data | no | `nominalDependencies` | `nominalDependencies` | `!(Set Text)` | `(.nominalDependencies)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:67` | `RouterSelectionSnapshot` | data | yes | `selectionRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:68` | `RouterSelectionSnapshot` | data | yes | `selectionVerification` | `verification` | `!SelectionVerification` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:69` | `RouterSelectionSnapshot` | data | yes | `selectionIdentity` | `identity` | `!(Maybe Text)` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:70` | `RouterSelectionSnapshot` | data | yes | `selectionVersion` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:71` | `RouterSelectionSnapshot` | data | yes | `selectionFingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:76` | `CoordinationImpact` | data | yes | `coordinationRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:77` | `CoordinationImpact` | data | yes | `coordinationSeverity` | `severity` | `!CoordinationSeverity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:78` | `CoordinationImpact` | data | yes | `coordinationReason` | `reason` | `!CoordinationReason` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:79` | `CoordinationImpact` | data | yes | `previousVerification` | `previousVerification` | `!SelectionVerification` | `(.previousVerification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:80` | `CoordinationImpact` | data | yes | `currentVerification` | `currentVerification` | `!SelectionVerification` | `(.currentVerification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:81` | `CoordinationImpact` | data | yes | `previousIdentity` | `previousIdentity` | `!(Maybe Text)` | `(.previousIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:82` | `CoordinationImpact` | data | yes | `currentIdentity` | `currentIdentity` | `!(Maybe Text)` | `(.currentIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:83` | `CoordinationImpact` | data | yes | `previousVersion` | `previousVersion` | `!(Maybe Natural)` | `(.previousVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:84` | `CoordinationImpact` | data | yes | `currentVersion` | `currentVersion` | `!(Maybe Natural)` | `(.currentVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:85` | `CoordinationImpact` | data | yes | `previousFingerprint` | `previousFingerprint` | `!(Maybe Text)` | `(.previousFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:86` | `CoordinationImpact` | data | yes | `currentFingerprint` | `currentFingerprint` | `!(Maybe Text)` | `(.currentFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:87` | `CoordinationImpact` | data | yes | `affectedUseSites` | `affectedUseSites` | `![UseSite]` | `(.affectedUseSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:92` | `RouterSelectionDrift` | data | yes | `driftRouter` | `router` | `!Name` | `(.router)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:93` | `RouterSelectionDrift` | data | yes | `driftPreviousSelection` | `previousSelection` | `!(Maybe RouterSelectionSnapshot)` | `(.previousSelection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:94` | `RouterSelectionDrift` | data | yes | `driftCurrentSelection` | `currentSelection` | `!(Maybe RouterSelectionSnapshot)` | `(.currentSelection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:102` | `ProcessReactionSnapshot` | data | yes | `process` | `process` | `!Name` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:103` | `ProcessReactionSnapshot` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:104` | `ProcessReactionSnapshot` | data | yes | `version` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:105` | `ProcessReactionSnapshot` | data | yes | `fingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:110` | `ProcessReactionDrift` | data | yes | `process` | `process` | `!Name` | `(.process)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:111` | `ProcessReactionDrift` | data | yes | `previousReaction` | `previousReaction` | `!(Maybe ProcessReactionSnapshot)` | `(.previousReaction)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:112` | `ProcessReactionDrift` | data | yes | `currentReaction` | `currentReaction` | `!(Maybe ProcessReactionSnapshot)` | `(.currentReaction)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:302` | `RouterSelectionState` | data | no | `stateSnapshot` | `snapshot` | `!RouterSelectionSnapshot` | `(.snapshot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/CoordinationImpact.hs:303` | `RouterSelectionState` | data | no | `stateUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:68` | `CoverageRoot` | data | yes | `rootSurface` | `surface` | `!CoverageSurface` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:69` | `CoverageRoot` | data | yes | `rootConsumer` | `consumer` | `!Text` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:70` | `CoverageRoot` | data | yes | `rootPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:71` | `CoverageRoot` | data | yes | `rootMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:72` | `CoverageRoot` | data | yes | `rootMode` | `mode` | `!CoverageMode` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:73` | `CoverageRoot` | data | yes | `rootCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:74` | `CoverageRoot` | data | yes | `rootCodecIdentity` | `codecIdentity` | `!(Maybe Text)` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:75` | `CoverageRoot` | data | yes | `rootCodecVersion` | `codecVersion` | `!(Maybe Text)` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:76` | `CoverageRoot` | data | yes | `rootWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:81` | `StructuralBoundary` | data | yes | `structuralRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:82` | `StructuralBoundary` | data | yes | `structuralPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:83` | `StructuralBoundary` | data | yes | `structuralMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:84` | `StructuralBoundary` | data | yes | `structuralCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:85` | `StructuralBoundary` | data | yes | `structuralWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:90` | `OpaqueBoundary` | data | yes | `opaqueRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:91` | `OpaqueBoundary` | data | yes | `opaquePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:92` | `OpaqueBoundary` | data | yes | `opaqueMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:93` | `OpaqueBoundary` | data | yes | `opaqueCodecIdentity` | `codecIdentity` | `!Text` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:94` | `OpaqueBoundary` | data | yes | `opaqueCodecVersion` | `codecVersion` | `!Text` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:99` | `JsonBoundary` | data | yes | `jsonSurface` | `surface` | `!CoverageSurface` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:100` | `JsonBoundary` | data | yes | `jsonRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:101` | `JsonBoundary` | data | yes | `jsonPath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:106` | `NominalBoundary` | data | yes | `root` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:107` | `NominalBoundary` | data | yes | `path` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:108` | `NominalBoundary` | data | yes | `position` | `position` | `!Text` | `(.position)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:109` | `NominalBoundary` | data | yes | `nominal` | `nominal` | `!Text` | `(.nominal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:110` | `NominalBoundary` | data | yes | `kind` | `kind` | `!Text` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:111` | `NominalBoundary` | data | yes | `prefix` | `prefix` | `!(Maybe Text)` | `(.prefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:112` | `NominalBoundary` | data | yes | `domainVersion` | `domainVersion` | `!(Maybe Text)` | `(.domainVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:113` | `NominalBoundary` | data | yes | `canonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:114` | `NominalBoundary` | data | yes | `ownership` | `ownership` | `!Text` | `(.ownership)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:119` | `SnapshotBoundary` | data | yes | `snapshotRoot` | `root` | `!Text` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:120` | `SnapshotBoundary` | data | yes | `snapshotAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:121` | `SnapshotBoundary` | data | yes | `snapshotRegister` | `register` | `!Text` | `(.register)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:122` | `SnapshotBoundary` | data | yes | `snapshotMappedType` | `mappedType` | `!Text` | `(.mappedType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:123` | `SnapshotBoundary` | data | yes | `snapshotMode` | `mode` | `!CoverageMode` | `(.mode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:124` | `SnapshotBoundary` | data | yes | `snapshotEncoding` | `encoding` | `!Text` | `(.encoding)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:125` | `SnapshotBoundary` | data | yes | `snapshotInvalidation` | `invalidation` | `!Text` | `(.invalidation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:126` | `SnapshotBoundary` | data | yes | `snapshotWireFingerprint` | `wireFingerprint` | `!Text` | `(.wireFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:127` | `SnapshotBoundary` | data | yes | `snapshotEnabled` | `enabled` | `!Bool` | `(.enabled)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:132` | `UnsupportedSurface` | data | yes | `unsupportedSurface` | `surface` | `!Text` | `(.surface)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:133` | `UnsupportedSurface` | data | yes | `unsupportedSupport` | `support` | `!Text` | `(.support)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:134` | `UnsupportedSurface` | data | yes | `unsupportedReason` | `reason` | `!Text` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:139` | `CoverageCounts` | data | yes | `totalRoots` | `totalRoots` | `!Int` | `(.totalRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:140` | `CoverageCounts` | data | yes | `structuralRoots` | `structuralRoots` | `!Int` | `(.structuralRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:141` | `CoverageCounts` | data | yes | `opaqueRoots` | `opaqueRoots` | `!Int` | `(.opaqueRoots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:142` | `CoverageCounts` | data | yes | `jsonBoundaries` | `jsonBoundaries` | `!Int` | `(.jsonBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:147` | `CoverageSummary` | data | yes | `aggregateCommandPayloads` | `aggregateCommandPayloads` | `!CoverageCounts` | `(.aggregateCommandPayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:148` | `CoverageSummary` | data | yes | `privateEventPayloads` | `privateEventPayloads` | `!CoverageCounts` | `(.privateEventPayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:149` | `CoverageSummary` | data | yes | `snapshotRegisters` | `snapshotRegisters` | `!CoverageCounts` | `(.snapshotRegisters)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:150` | `CoverageSummary` | data | yes | `workqueuePayloads` | `workqueuePayloads` | `!CoverageCounts` | `(.workqueuePayloads)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:151` | `CoverageSummary` | data | yes | `readModelQueryInputs` | `readModelQueryInputs` | `!CoverageCounts` | `(.readModelQueryInputs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:152` | `CoverageSummary` | data | yes | `readModelQueryResults` | `readModelQueryResults` | `!CoverageCounts` | `(.readModelQueryResults)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:153` | `CoverageSummary` | data | yes | `projectionTypedConsumers` | `projectionTypedConsumers` | `!CoverageCounts` | `(.projectionTypedConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:158` | `CoverageFinding` | data | yes | `findingSeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:159` | `CoverageFinding` | data | yes | `findingCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:160` | `CoverageFinding` | data | yes | `findingRoots` | `roots` | `![Text]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:161` | `CoverageFinding` | data | yes | `findingMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:166` | `CoveragePrevious` | data | yes | `previousReference` | `reference` | `!Text` | `(.reference)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:167` | `CoveragePrevious` | data | yes | `previousSummary` | `summary` | `!CoverageSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:168` | `CoveragePrevious` | data | yes | `previousOpaqueBoundaries` | `opaqueBoundaries` | `![OpaqueBoundary]` | `(.opaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:173` | `CoverageDelta` | data | yes | `aggregateCommandRootDelta` | `aggregateCommandRootDelta` | `!Int` | `(.aggregateCommandRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:174` | `CoverageDelta` | data | yes | `privateEventRootDelta` | `privateEventRootDelta` | `!Int` | `(.privateEventRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:175` | `CoverageDelta` | data | yes | `snapshotRegisterRootDelta` | `snapshotRegisterRootDelta` | `!Int` | `(.snapshotRegisterRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:176` | `CoverageDelta` | data | yes | `workqueuePayloadRootDelta` | `workqueuePayloadRootDelta` | `!Int` | `(.workqueuePayloadRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:177` | `CoverageDelta` | data | yes | `readModelQueryInputRootDelta` | `readModelQueryInputRootDelta` | `!Int` | `(.readModelQueryInputRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:178` | `CoverageDelta` | data | yes | `readModelQueryResultRootDelta` | `readModelQueryResultRootDelta` | `!Int` | `(.readModelQueryResultRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:179` | `CoverageDelta` | data | yes | `projectionTypedConsumerRootDelta` | `projectionTypedConsumerRootDelta` | `!Int` | `(.projectionTypedConsumerRootDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:180` | `CoverageDelta` | data | yes | `opaqueBoundaryDelta` | `opaqueBoundaryDelta` | `!Int` | `(.opaqueBoundaryDelta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:181` | `CoverageDelta` | data | yes | `addedOpaqueBoundaries` | `addedOpaqueBoundaries` | `![OpaqueBoundary]` | `(.addedOpaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:182` | `CoverageDelta` | data | yes | `removedOpaqueBoundaries` | `removedOpaqueBoundaries` | `![OpaqueBoundary]` | `(.removedOpaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:187` | `CoverageReport` | data | yes | `coverageSpec` | `spec` | `!FilePath` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:188` | `CoverageReport` | data | yes | `coverageRoots` | `roots` | `![CoverageRoot]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:189` | `CoverageReport` | data | yes | `coverageStructuralBoundaries` | `structuralBoundaries` | `![StructuralBoundary]` | `(.structuralBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:190` | `CoverageReport` | data | yes | `coverageOpaqueBoundaries` | `opaqueBoundaries` | `![OpaqueBoundary]` | `(.opaqueBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:191` | `CoverageReport` | data | yes | `coverageJsonBoundaries` | `jsonBoundaries` | `![JsonBoundary]` | `(.jsonBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:192` | `CoverageReport` | data | yes | `nominalBoundaries` | `nominalBoundaries` | `![NominalBoundary]` | `(.nominalBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:193` | `CoverageReport` | data | yes | `coverageSnapshotBoundaries` | `snapshotBoundaries` | `![SnapshotBoundary]` | `(.snapshotBoundaries)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:194` | `CoverageReport` | data | yes | `coverageUnsupportedSurfaces` | `unsupportedSurfaces` | `![UnsupportedSurface]` | `(.unsupportedSurfaces)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:195` | `CoverageReport` | data | yes | `coverageSummary` | `summary` | `!CoverageSummary` | `(.summary)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:196` | `CoverageReport` | data | yes | `coverageFindings` | `findings` | `![CoverageFinding]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:197` | `CoverageReport` | data | yes | `coveragePrevious` | `previous` | `!(Maybe CoveragePrevious)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Coverage.hs:198` | `CoverageReport` | data | yes | `coverageDelta` | `delta` | `!(Maybe CoverageDelta)` | `(.delta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:143` | `CompatibilityVector` | data | yes | `cvPrivateHistoryRead` | `privateHistoryRead` | `!SurfaceVerdict` | `(.privateHistoryRead)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:144` | `CompatibilityVector` | data | yes | `cvOldBinaryReadNewEvents` | `oldBinaryReadNewEvents` | `!SurfaceVerdict` | `(.oldBinaryReadNewEvents)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:145` | `CompatibilityVector` | data | yes | `cvSnapshotHydration` | `snapshotHydration` | `!SurfaceVerdict` | `(.snapshotHydration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:146` | `CompatibilityVector` | data | yes | `cvPublicConsumer` | `publicConsumer` | `!SurfaceVerdict` | `(.publicConsumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:147` | `CompatibilityVector` | data | yes | `cvPersistedIdentity` | `persistedIdentity` | `!SurfaceVerdict` | `(.persistedIdentity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:148` | `CompatibilityVector` | data | yes | `cvConsumerBuild` | `consumerBuild` | `!SurfaceVerdict` | `(.consumerBuild)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:149` | `CompatibilityVector` | data | yes | `cvRollout` | `rollout` | `!(Set RolloutConstraint)` | `(.rollout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:162` | `MappedPersistedImpact` | data | yes | `mappedPersistedSurface` | `surface` | `!MappedPersistedSurface` | `(.surface)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:163` | `MappedPersistedImpact` | data | yes | `mappedPersistedVerdict` | `verdict` | `!SurfaceVerdict` | `(.verdict)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:181` | `ChangeContext` | data | no | `changeContextRoot` | `root` | `!Name` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:182` | `ChangeContext` | data | no | `changeContextPaths` | `paths` | `![Text]` | `(.paths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:183` | `ChangeContext` | data | no | `contextKind` | `contextKind` | `!ContextKind` | `(.contextKind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:184` | `ChangeContext` | data | no | `contextOriginalLabel` | `contextOriginalLabel` | `!Label` | `(.contextOriginalLabel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:195` | `ChangeKind` | data | yes | `ckNode` | `node` | `!Name` | `(.node)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:196` | `ChangeKind` | data | yes | `ckFacet` | `facet` | `!Text` | `(.facet)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:197` | `ChangeKind` | data | yes | `ckSubject` | `subject` | `!Text` | `(.subject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:198` | `ChangeKind` | data | yes | `ckCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:199` | `ChangeKind` | data | yes | `ckContext` | `context` | `!ChangeContext` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:200` | `ChangeKind` | data | yes | `ckVector` | `vector` | `!CompatibilityVector` | `(.vector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:201` | `ChangeKind` | data | yes | `ckMappedPersistedImpact` | `mappedPersistedImpact` | `!(Maybe MappedPersistedImpact)` | `(.mappedPersistedImpact)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:202` | `ChangeKind` | data | yes | `ckMappedConsequences` | `mappedConsequences` | `!(Set MappedConsequence)` | `(.mappedConsequences)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:203` | `ChangeKind` | data | yes | `ckPaths` | `paths` | `![Text]` | `(.paths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:204` | `ChangeKind` | data | yes | `ckDetail` | `detail` | `!Text` | `(.detail)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:708` | `DiffEnv` | data | yes | `deOld` | `old` | `!Spec` | `(.old)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:709` | `DiffEnv` | data | yes | `deNew` | `new` | `!Spec` | `(.new)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:710` | `DiffEnv` | data | yes | `oldService` | `oldService` | `!CheckedService` | `(.oldService)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:711` | `DiffEnv` | data | yes | `newService` | `newService` | `!CheckedService` | `(.newService)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:712` | `DiffEnv` | data | yes | `newValidationErrors` | `newValidationErrors` | `![Diagnostic]` | `(.newValidationErrors)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:764` | `Paired` | data | yes | `prMatched` | `matched` | `![(n, n)]` | `(.matched)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:765` | `Paired` | data | yes | `prAdded` | `added` | `![n]` | `(.added)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:766` | `Paired` | data | yes | `prRemoved` | `removed` | `![n]` | `(.removed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:1817` | `GuardProposal` | data | no | `proposalBody` | `body` | `!ReplayBodyDelta` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:1818` | `GuardProposal` | data | no | `proposalTwin` | `twin` | `!Transition` | `(.twin)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2207` | `EventFieldSig` | data | no | `eventFieldDslName` | `dslName` | `!Name` | `(.dslName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2208` | `EventFieldSig` | data | no | `eventFieldSelector` | `selector` | `!Name` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2209` | `EventFieldSig` | data | no | `eventFieldWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Diff.hs:2210` | `EventFieldSig` | data | no | `eventFieldType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:74` | `DiffReport` | data | no | `reportGate` | `gate` | `!(Set CompatibilitySurface)` | `(.gate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:75` | `DiffReport` | data | no | `reportFindings` | `findings` | `![Change]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:76` | `DiffReport` | data | no | `reportSemanticImpact` | `semanticImpact` | `!(Maybe [MappedImpactDelta])` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:77` | `DiffReport` | data | no | `reportCoordinationImpact` | `coordinationImpact` | `!(Maybe [CoordinationImpact])` | `(.coordinationImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:97` | `OwnedSite` | data | yes | `osFile` | `file` | `!FilePath` | `(.file)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:98` | `OwnedSite` | data | yes | `osLine` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:104` | `WorkspaceChange` | data | yes | `wcChange` | `change` | `!Change` | `(.change)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:105` | `WorkspaceChange` | data | yes | `wcDeclarationSite` | `declarationSite` | `!(Maybe OwnedSite)` | `(.declarationSite)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:106` | `WorkspaceChange` | data | yes | `wcUseSites` | `useSites` | `![(Text, Maybe OwnedSite)]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:112` | `WorkspaceMeta` | data | yes | `wmIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:113` | `WorkspaceMeta` | data | yes | `wmManifest` | `manifest` | `!FilePath` | `(.manifest)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:114` | `WorkspaceMeta` | data | yes | `wmSince` | `since` | `!Text` | `(.since)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:115` | `WorkspaceMeta` | data | yes | `wmMembersOld` | `membersOld` | `![FilePath]` | `(.membersOld)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:116` | `WorkspaceMeta` | data | yes | `wmMembersNew` | `membersNew` | `![FilePath]` | `(.membersNew)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:117` | `WorkspaceMeta` | data | yes | `wmAdoptionBaseline` | `adoptionBaseline` | `!Bool` | `(.adoptionBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:122` | `WorkspaceDiffReport` | data | no | `workspaceReportMeta` | `meta` | `!WorkspaceMeta` | `(.meta)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:123` | `WorkspaceDiffReport` | data | no | `workspaceReportGate` | `gate` | `!(Set CompatibilitySurface)` | `(.gate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:124` | `WorkspaceDiffReport` | data | no | `workspaceReportFindings` | `findings` | `![WorkspaceChange]` | `(.findings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:125` | `WorkspaceDiffReport` | data | no | `workspaceReportSemanticImpact` | `semanticImpact` | `!(Maybe [MappedImpactDelta])` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/DiffReport.hs:126` | `WorkspaceDiffReport` | data | no | `workspaceReportCoordinationImpact` | `coordinationImpact` | `!(Maybe [CoordinationImpact])` | `(.coordinationImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:36` | `CheckedFieldCopy` | data | yes | `outputSelector` | `outputSelector` | `!Name` | `(.outputSelector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:37` | `CheckedFieldCopy` | data | yes | `outputWireName` | `outputWireName` | `!Text` | `(.outputWireName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:38` | `CheckedFieldCopy` | data | yes | `outputFieldType` | `outputFieldType` | `!ResolvedAggregateType` | `(.outputFieldType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:43` | `OutputObligationKey` | newtype | yes | `unOutputObligationKey` | `unOutputObligationKey` | `Text` | explicit `unOutputObligationKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:52` | `EventOutputMapping` | data | yes | `outputSourceCommand` | `sourceCommand` | `!Name` | `(.sourceCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:53` | `EventOutputMapping` | data | yes | `outputFields` | `fields` | `![CheckedFieldCopy]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:56` | `EventOutputMapping` | data | yes | `outputObligation` | `obligation` | `!OutputObligationKey` | `(.obligation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `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:46` | `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:47` | `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:48` | `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:49` | `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:50` | `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:51` | `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:52` | `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:53` | `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:54` | `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:55` | `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:56` | `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:57` | `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:62` | `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:63` | `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:64` | `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:65` | `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:66` | `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:67` | `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:126` | `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:127` | `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:128` | `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:150` | `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:151` | `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:152` | `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)` |
+| `keiro-dsl/src/Keiro/Dsl/FieldIdentity.hs:21` | `ResolvedFieldIdentity` | data | no | `fieldLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:55` | `FrontendContext` | data | no | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:56` | `FrontendContext` | data | no | `language` | `language` | `!SourceLanguage` | `(.language)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:57` | `FrontendContext` | data | no | `definition` | `definition` | `!LanguageDefinition` | `(.definition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:91` | `FrontendFailure` | data | no | `phase` | `phase` | `!FrontendPhase` | `(.phase)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:92` | `FrontendFailure` | data | no | `code` | `code` | `!FrontendErrorCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:93` | `FrontendFailure` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:94` | `FrontendFailure` | data | no | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:95` | `FrontendFailure` | data | no | `expected` | `expected` | `![Text]` | `(.expected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:96` | `FrontendFailure` | data | no | `supportedVersions` | `supportedVersions` | `![LanguageVersion]` | `(.supportedVersions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:97` | `FrontendFailure` | data | no | `compatibility` | `compatibility` | `!ParseFailure` | `(.compatibility)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:143` | `LoweringFailure` | data | no | `code` | `code` | `!LoweringFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:144` | `LoweringFailure` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Frontend/Internal.hs:145` | `LoweringFailure` | data | no | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:42` | `GoldenPayload` | data | yes | `goldenContext` | `context` | `!Text` | `(.context)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:43` | `GoldenPayload` | data | yes | `goldenAggregate` | `aggregate` | `!Text` | `(.aggregate)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:44` | `GoldenPayload` | data | yes | `goldenEvent` | `event` | `!Text` | `(.event)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:45` | `GoldenPayload` | data | yes | `goldenVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:46` | `GoldenPayload` | data | yes | `goldenJson` | `json` | `!Text` | `(.json)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Goldens.hs:47` | `GoldenPayload` | data | yes | `goldenEvidence` | `evidence` | `!GoldenEvidence` | `(.evidence)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:206` | `Loc` | newtype | yes | `unLoc` | `unLoc` | `Int` | explicit `unLoc` positional function | rendered/canonical output | `deriving stock (Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:223` | `IdDecl` | data | yes | `idName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:224` | `IdDecl` | data | yes | `idPrefix` | `prefix` | `!Text` | `(.prefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:225` | `IdDecl` | data | yes | `admission` | `admission` | `!IdAdmission` | `(.admission)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:226` | `IdDecl` | data | yes | `idBinding` | `binding` | `!(Maybe NominalBindingDecl)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:227` | `IdDecl` | data | yes | `idLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:234` | `EnumDecl` | data | yes | `enumName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:235` | `EnumDecl` | data | yes | `enumCtors` | `ctors` | `![(Name, Text)]` | `(.ctors)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:236` | `EnumDecl` | data | yes | `enumBinding` | `binding` | `!(Maybe NominalBindingDecl)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:237` | `EnumDecl` | data | yes | `enumLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:245` | `RuleDecl` | data | yes | `ruleName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:246` | `RuleDecl` | data | yes | `ruleDomain` | `domain` | `!Name` | `(.domain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:247` | `RuleDecl` | data | yes | `ruleCodomain` | `codomain` | `!Name` | `(.codomain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:248` | `RuleDecl` | data | yes | `ruleCases` | `cases` | `![(Name, Expr)]` | `(.cases)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:249` | `RuleDecl` | data | yes | `ruleLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:292` | `WireField` | data | yes | `wfHaskell` | `haskell` | `!Name` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:293` | `WireField` | data | yes | `wfKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:294` | `WireField` | data | yes | `wfType` | `valueType` | `!TypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:295` | `WireField` | data | yes | `wfPresence` | `presence` | `!Presence` | `(.presence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:296` | `WireField` | data | yes | `wfOnMissing` | `onMissing` | `!(Maybe OnMissing)` | `(.onMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:297` | `WireField` | data | yes | `wfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:305` | `UnionEncoding` | data | yes | `ueTagField` | `tagField` | `!Text` | `(.tagField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:306` | `UnionEncoding` | data | yes | `ueContentsField` | `contentsField` | `!Text` | `(.contentsField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:307` | `UnionEncoding` | data | yes | `ueUnknownFields` | `unknownFields` | `!UnknownFields` | `(.unknownFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:312` | `WireEnum` | data | yes | `weCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:313` | `WireEnum` | data | yes | `weTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:314` | `WireEnum` | data | yes | `weLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:319` | `WireArm` | data | yes | `waCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:320` | `WireArm` | data | yes | `waTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:321` | `WireArm` | data | yes | `waPayload` | `payload` | `!(Maybe TypeExpr)` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:322` | `WireArm` | data | yes | `waLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:341` | `HaskellSource` | data | yes | `hsPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:342` | `HaskellSource` | data | yes | `hsModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:343` | `HaskellSource` | data | yes | `hsType` | `valueType` | `!Name` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:352` | `NominalBindingDecl` | data | yes | `nominalHaskell` | `haskell` | `!(Maybe HaskellSource)` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:353` | `NominalBindingDecl` | data | yes | `nominalBinding` | `binding` | `!(Maybe Text)` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:354` | `NominalBindingDecl` | data | yes | `nominalBindingVersion` | `bindingVersion` | `!(Maybe Text)` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:355` | `NominalBindingDecl` | data | yes | `nominalCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:356` | `NominalBindingDecl` | data | yes | `nominalFixtures` | `fixtures` | `!(Maybe Text)` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:357` | `NominalBindingDecl` | data | yes | `nominalInitial` | `initial` | `!(Maybe Text)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:358` | `NominalBindingDecl` | data | yes | `nominalLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:367` | `NominalScalarDecl` | data | yes | `nominalScalarName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:368` | `NominalScalarDecl` | data | yes | `nominalScalarRepresentation` | `representation` | `!Name` | `(.representation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:369` | `NominalScalarDecl` | data | yes | `nominalScalarBinding` | `binding` | `!NominalBindingDecl` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:370` | `NominalScalarDecl` | data | yes | `nominalScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:376` | `MappedDecl` | data | yes | `msName` | `msName` | `!Name` | `(.msName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:377` | `MappedDecl` | data | yes | `msHaskell` | `msHaskell` | `!(Maybe HaskellSource)` | `(.msHaskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:378` | `MappedDecl` | data | yes | `msBinding` | `msBinding` | `!(Maybe Text)` | `(.msBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:379` | `MappedDecl` | data | yes | `msBindingVersion` | `msBindingVersion` | `!(Maybe Text)` | `(.msBindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:380` | `MappedDecl` | data | yes | `msCanonical` | `msCanonical` | `!(Maybe Text)` | `(.msCanonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:381` | `MappedDecl` | data | yes | `msFixtures` | `msFixtures` | `!(Maybe Text)` | `(.msFixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:382` | `MappedDecl` | data | yes | `msInitial` | `msInitial` | `!(Maybe Text)` | `(.msInitial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:383` | `MappedDecl` | data | yes | `msShape` | `msShape` | `!MappedShape` | `(.msShape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:384` | `MappedDecl` | data | yes | `msLoc` | `msLoc` | `!Loc` | `(.msLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:387` | `MappedDecl` | data | yes | `mrName` | `mrName` | `!Name` | `(.mrName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:388` | `MappedDecl` | data | yes | `mrHaskell` | `mrHaskell` | `!(Maybe HaskellSource)` | `(.mrHaskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:389` | `MappedDecl` | data | yes | `mrBinding` | `mrBinding` | `!(Maybe Text)` | `(.mrBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:390` | `MappedDecl` | data | yes | `mrBindingVersion` | `mrBindingVersion` | `!(Maybe Text)` | `(.mrBindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:391` | `MappedDecl` | data | yes | `mrCanonical` | `mrCanonical` | `!(Maybe Text)` | `(.mrCanonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:392` | `MappedDecl` | data | yes | `mrFixtures` | `mrFixtures` | `!(Maybe Text)` | `(.mrFixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:393` | `MappedDecl` | data | yes | `mrInitial` | `mrInitial` | `!(Maybe Text)` | `(.mrInitial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:394` | `MappedDecl` | data | yes | `mrPolicy` | `mrPolicy` | `!RefinedWirePolicy` | `(.mrPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:395` | `MappedDecl` | data | yes | `mrLoc` | `mrLoc` | `!Loc` | `(.mrLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:398` | `MappedDecl` | data | yes | `moName` | `moName` | `!Name` | `(.moName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:399` | `MappedDecl` | data | yes | `moHaskell` | `moHaskell` | `!(Maybe HaskellSource)` | `(.moHaskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:400` | `MappedDecl` | data | yes | `moCodecId` | `moCodecId` | `!(Maybe Text)` | `(.moCodecId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:401` | `MappedDecl` | data | yes | `moCodecVersion` | `moCodecVersion` | `!(Maybe Text)` | `(.moCodecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:402` | `MappedDecl` | data | yes | `moFixtures` | `moFixtures` | `!(Maybe Text)` | `(.moFixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:403` | `MappedDecl` | data | yes | `moInitial` | `moInitial` | `!(Maybe Text)` | `(.moInitial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:404` | `MappedDecl` | data | yes | `moLoc` | `moLoc` | `!Loc` | `(.moLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:412` | `Mapping` | data | yes | `mapPairs` | `pairs` | `![(Name, Name)]` | `(.pairs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:413` | `Mapping` | data | yes | `mapPartial` | `partial` | `!Bool` | `(.partial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:523` | `RegDecl` | data | yes | `regName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:524` | `RegDecl` | data | yes | `regType` | `valueType` | `!TypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:525` | `RegDecl` | data | yes | `regInitial` | `initial` | `!RegInitial` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:526` | `RegDecl` | data | yes | `regLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:534` | `StateDecl` | data | yes | `stName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:535` | `StateDecl` | data | yes | `stTerminal` | `terminal` | `!Bool` | `(.terminal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:536` | `StateDecl` | data | yes | `stLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:547` | `AggregateField` | data | yes | `aggregateFieldName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:548` | `AggregateField` | data | yes | `aggregateFieldSelector` | `selector` | `!(Maybe Name)` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:549` | `AggregateField` | data | yes | `aggregateFieldWireKey` | `wireKey` | `!(Maybe Text)` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:550` | `AggregateField` | data | yes | `aggregateFieldType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:551` | `AggregateField` | data | yes | `aggregateFieldLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:558` | `Field` | data | yes | `fieldName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:559` | `Field` | data | yes | `fieldType` | `valueType` | `!(Maybe Name)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:565` | `Command` | data | yes | `cmdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:566` | `Command` | data | yes | `cmdFields` | `fields` | `![AggregateField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:567` | `Command` | data | yes | `cmdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:577` | `Event` | data | yes | `evName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:578` | `Event` | data | yes | `evBody` | `body` | `!EventBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:580` | `Event` | data | yes | `evVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:583` | `Event` | data | yes | `evUpcastFrom` | `upcastFrom` | `!(Maybe (Int, Hole))` | `(.upcastFrom)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:588` | `Event` | data | yes | `evRetiring` | `retiring` | `!Bool` | `(.retiring)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:592` | `Event` | data | yes | `evDeprecated` | `deprecated` | `!Bool` | `(.deprecated)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:593` | `Event` | data | yes | `evLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:611` | `DomainOutcomeTypes` | data | yes | `rejectionType` | `rejectionType` | `!Name` | `(.rejectionType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:612` | `DomainOutcomeTypes` | data | yes | `noOpType` | `noOpType` | `!Name` | `(.noOpType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:613` | `DomainOutcomeTypes` | data | yes | `outcomeTypesLoc` | `outcomeTypesLoc` | `!Loc` | `(.outcomeTypesLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:633` | `Transition` | data | yes | `tSource` | `source` | `!Name` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:634` | `Transition` | data | yes | `tCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:635` | `Transition` | data | yes | `tImplementation` | `implementation` | `!TransitionImplementation` | `(.implementation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:636` | `Transition` | data | yes | `tGuard` | `guard` | `!(Maybe Expr)` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:637` | `Transition` | data | yes | `tWrites` | `writes` | `![(Name, Expr)]` | `(.writes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:638` | `Transition` | data | yes | `tEmits` | `emits` | `![Name]` | `(.emits)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:639` | `Transition` | data | yes | `tOutcome` | `outcome` | `!(Maybe TransitionOutcome)` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:642` | `Transition` | data | yes | `tOutcomeDuplicateLocs` | `outcomeDuplicateLocs` | `![Loc]` | `(.outcomeDuplicateLocs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:643` | `Transition` | data | yes | `tGoto` | `goto` | `!Name` | `(.goto)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:644` | `Transition` | data | yes | `tMode` | `mode` | `!TransitionMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:645` | `Transition` | data | yes | `tLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:673` | `WireSpec` | data | yes | `wireKind` | `kind` | `!Text` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:674` | `WireSpec` | data | yes | `wireFields` | `fields` | `!Text` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:675` | `WireSpec` | data | yes | `wireSchemaVersion` | `schemaVersion` | `!Int` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:682` | `ProjectionSpec` | data | yes | `projTable` | `table` | `!Name` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:683` | `ProjectionSpec` | data | yes | `projConsistency` | `consistency` | `!(Maybe Consistency)` | `(.consistency)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:684` | `ProjectionSpec` | data | yes | `projKey` | `key` | `!Name` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:685` | `ProjectionSpec` | data | yes | `projStatusMap` | `statusMap` | `!(Maybe Mapping)` | `(.statusMap)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:686` | `ProjectionSpec` | data | yes | `projLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:699` | `SnapshotSpec` | data | yes | `snapPolicy` | `policy` | `!SnapPolicy` | `(.policy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:700` | `SnapshotSpec` | data | yes | `snapCodecVersion` | `codecVersion` | `!Int` | `(.codecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:701` | `SnapshotSpec` | data | yes | `snapShapeHash` | `shapeHash` | `!Text` | `(.shapeHash)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:702` | `SnapshotSpec` | data | yes | `snapLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:709` | `Aggregate` | data | yes | `aggName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:710` | `Aggregate` | data | yes | `aggRegs` | `regs` | `![RegDecl]` | `(.regs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:711` | `Aggregate` | data | yes | `aggStates` | `states` | `![StateDecl]` | `(.states)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:712` | `Aggregate` | data | yes | `aggCommands` | `commands` | `![Command]` | `(.commands)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:713` | `Aggregate` | data | yes | `aggEvents` | `events` | `![Event]` | `(.events)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:714` | `Aggregate` | data | yes | `aggTransitions` | `transitions` | `![Transition]` | `(.transitions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:715` | `Aggregate` | data | yes | `aggDomainOutcomeTypes` | `domainOutcomeTypes` | `!(Maybe DomainOutcomeTypes)` | `(.domainOutcomeTypes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:718` | `Aggregate` | data | yes | `aggDomainOutcomeDuplicateLocs` | `domainOutcomeDuplicateLocs` | `![Loc]` | `(.domainOutcomeDuplicateLocs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:719` | `Aggregate` | data | yes | `aggWire` | `wire` | `!(Maybe WireSpec)` | `(.wire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:720` | `Aggregate` | data | yes | `aggProjection` | `projection` | `!(Maybe ProjectionSpec)` | `(.projection)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:721` | `Aggregate` | data | yes | `aggSnapshot` | `snapshot` | `!(Maybe SnapshotSpec)` | `(.snapshot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:722` | `Aggregate` | data | yes | `aggLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:732` | `FieldBinding` | data | yes | `fbName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:733` | `FieldBinding` | data | yes | `fbValue` | `value` | `!(Maybe Text)` | `(.value)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:740` | `InputDecl` | data | yes | `inName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:741` | `InputDecl` | data | yes | `inFields` | `fields` | `![Field]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:742` | `InputDecl` | data | yes | `inType` | `valueType` | `!(Maybe TypeExpr)` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:743` | `InputDecl` | data | yes | `inLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:750` | `CorrelateDecl` | data | yes | `corrField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:751` | `CorrelateDecl` | data | yes | `corrVia` | `via` | `!Name` | `(.via)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:759` | `SagaRef` | data | yes | `sagaAgg` | `agg` | `!Name` | `(.agg)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:760` | `SagaRef` | data | yes | `sagaCategory` | `category` | `!Text` | `(.category)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:771` | `DispatchDisposition` | data | yes | `onAppended` | `onAppended` | `!Disp` | `(.onAppended)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:772` | `DispatchDisposition` | data | yes | `onDuplicate` | `onDuplicate` | `!Disp` | `(.onDuplicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:773` | `DispatchDisposition` | data | yes | `onFailed` | `onFailed` | `!Disp` | `(.onFailed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:779` | `AdvanceNode` | data | yes | `advCommand` | `advCommand` | `!Name` | `(.advCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:780` | `AdvanceNode` | data | yes | `advFields` | `advFields` | `![FieldBinding]` | `(.advFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:786` | `DispatchNode` | data | yes | `dispTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:787` | `DispatchNode` | data | yes | `dispKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:788` | `DispatchNode` | data | yes | `dispCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:789` | `DispatchNode` | data | yes | `dispFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:790` | `DispatchNode` | data | yes | `disposition` | `osition` | `!DispatchDisposition` | `(.osition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:791` | `DispatchNode` | data | yes | `dispLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:798` | `HandleNode` | data | yes | `hOn` | `on` | `!Name` | `(.on)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:799` | `HandleNode` | data | yes | `hAdvance` | `advance` | `!AdvanceNode` | `(.advance)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:800` | `HandleNode` | data | yes | `hDispatch` | `dispatch` | `![DispatchNode]` | `(.dispatch)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:801` | `HandleNode` | data | yes | `hSchedule` | `schedule` | `!Name` | `(.schedule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:807` | `IdExpr` | data | yes | `ideStrategy` | `strategy` | `!IdStrategy` | `(.strategy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:808` | `IdExpr` | data | yes | `idePrefix` | `prefix` | `!Text` | `(.prefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:809` | `IdExpr` | data | yes | `ideField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:820` | `FireAtExpr` | data | yes | `faField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:821` | `FireAtExpr` | data | yes | `faWindow` | `window` | `!Text` | `(.window)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:831` | `FireDisposition` | data | yes | `onOk` | `onOk` | `!FireOutcome` | `(.onOk)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:832` | `FireDisposition` | data | yes | `onReject` | `onReject` | `!FireOutcome` | `(.onReject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:833` | `FireDisposition` | data | yes | `onAmbiguous` | `onAmbiguous` | `!FireOutcome` | `(.onAmbiguous)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:834` | `FireDisposition` | data | yes | `onError` | `onError` | `!FireOutcome` | `(.onError)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:835` | `FireDisposition` | data | yes | `notMine` | `notMine` | `!FireOutcome` | `(.notMine)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:841` | `FireNode` | data | yes | `fireTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:842` | `FireNode` | data | yes | `fireKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:843` | `FireNode` | data | yes | `fireCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:844` | `FireNode` | data | yes | `fireFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:845` | `FireNode` | data | yes | `fireFiredEventId` | `firedEventId` | `!IdExpr` | `(.firedEventId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:846` | `FireNode` | data | yes | `fireDisposition` | `disposition` | `!FireDisposition` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:852` | `TimerNode` | data | yes | `tmName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:853` | `TimerNode` | data | yes | `tmId` | `id` | `!IdExpr` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:854` | `TimerNode` | data | yes | `tmFireAt` | `fireAt` | `!FireAtExpr` | `(.fireAt)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:855` | `TimerNode` | data | yes | `tmPayload` | `payload` | `![FieldBinding]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:856` | `TimerNode` | data | yes | `tmFire` | `fire` | `!FireNode` | `(.fire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:857` | `TimerNode` | data | yes | `tmDecodeUnknown` | `decodeUnknown` | `!Name` | `(.decodeUnknown)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:858` | `TimerNode` | data | yes | `tmMaxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:859` | `TimerNode` | data | yes | `tmDeadLetter` | `deadLetter` | `!Text` | `(.deadLetter)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:860` | `TimerNode` | data | yes | `tmLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:873` | `ReactionBody` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:874` | `ReactionBody` | data | yes | `versionLoc` | `versionLoc` | `!Loc` | `(.versionLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:875` | `ReactionBody` | data | yes | `inputs` | `inputs` | `!(NonEmpty InputDecl)` | `(.inputs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:876` | `ReactionBody` | data | yes | `reactions` | `reactions` | `!(NonEmpty ReactionNode)` | `(.reactions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:877` | `ReactionBody` | data | yes | `timerPolicy` | `timerPolicy` | `!(Maybe TimerPolicy)` | `(.timerPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:878` | `ReactionBody` | data | yes | `timers` | `timers` | `![ReactionTimerNode]` | `(.timers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:883` | `ReactionNode` | data | yes | `on` | `on` | `!Name` | `(.on)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:884` | `ReactionNode` | data | yes | `arms` | `arms` | `!(NonEmpty ReactionArm)` | `(.arms)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:885` | `ReactionNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:890` | `ReactionArm` | data | yes | `guard` | `guard` | `!ArmGuard` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:891` | `ReactionArm` | data | yes | `body` | `body` | `!ArmBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:892` | `ReactionArm` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:905` | `ArmBody` | data | yes | `advance` | `advance` | `!(Maybe AdvanceReaction)` | `(.advance)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:906` | `ArmBody` | data | yes | `followUps` | `followUps` | `![FollowUp]` | `(.followUps)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:911` | `AdvanceReaction` | data | yes | `command` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:912` | `AdvanceReaction` | data | yes | `fields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:913` | `AdvanceReaction` | data | yes | `accepted` | `accepted` | `!(Maybe [FollowUp])` | `(.accepted)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:914` | `AdvanceReaction` | data | yes | `silentNoAction` | `silentNoAction` | `!Bool` | `(.silentNoAction)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:915` | `AdvanceReaction` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:926` | `ScheduleNode` | data | yes | `timer` | `timer` | `!Name` | `(.timer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:927` | `ScheduleNode` | data | yes | `mode` | `mode` | `!ScheduleMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:928` | `ScheduleNode` | data | yes | `fireAt` | `fireAt` | `!FireAtExpr` | `(.fireAt)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:929` | `ScheduleNode` | data | yes | `bindings` | `bindings` | `![FieldBinding]` | `(.bindings)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:930` | `ScheduleNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:938` | `TimerPolicy` | data | yes | `maxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:939` | `TimerPolicy` | data | yes | `deadLetter` | `deadLetter` | `!Text` | `(.deadLetter)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:940` | `TimerPolicy` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:945` | `ReactionTimerNode` | data | yes | `name` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:946` | `ReactionTimerNode` | data | yes | `id` | `id` | `!IdExpr` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:947` | `ReactionTimerNode` | data | yes | `payload` | `payload` | `![PayloadField]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:948` | `ReactionTimerNode` | data | yes | `fire` | `fire` | `!FireNode` | `(.fire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:949` | `ReactionTimerNode` | data | yes | `decodeUnknown` | `decodeUnknown` | `!Name` | `(.decodeUnknown)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:950` | `ReactionTimerNode` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:967` | `ProcessNode` | data | yes | `procId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:969` | `ProcessNode` | data | yes | `procName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:970` | `ProcessNode` | data | yes | `procCorrelate` | `correlate` | `!CorrelateDecl` | `(.correlate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:971` | `ProcessNode` | data | yes | `procSaga` | `saga` | `!SagaRef` | `(.saga)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:972` | `ProcessNode` | data | yes | `procTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:973` | `ProcessNode` | data | yes | `procProjections` | `projections` | `![Name]` | `(.projections)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:974` | `ProcessNode` | data | yes | `body` | `body` | `!ProcessBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:975` | `ProcessNode` | data | yes | `procRejected` | `rejected` | `!PolicyChoice` | `(.rejected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:976` | `ProcessNode` | data | yes | `procPoison` | `poison` | `!PolicyChoice` | `(.poison)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:977` | `ProcessNode` | data | yes | `procLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:994` | `RouterSelectionDecl` | data | yes | `rsIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:995` | `RouterSelectionDecl` | data | yes | `rsIdentityLoc` | `identityLoc` | `!Loc` | `(.identityLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:996` | `RouterSelectionDecl` | data | yes | `rsVersion` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:997` | `RouterSelectionDecl` | data | yes | `rsVersionLoc` | `versionLoc` | `!Loc` | `(.versionLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:998` | `RouterSelectionDecl` | data | yes | `rsQuery` | `query` | `!Name` | `(.query)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:999` | `RouterSelectionDecl` | data | yes | `rsQueryLoc` | `queryLoc` | `!Loc` | `(.queryLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1000` | `RouterSelectionDecl` | data | yes | `rsQueryInput` | `queryInput` | `!Name` | `(.queryInput)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1001` | `RouterSelectionDecl` | data | yes | `rsQueryInputLoc` | `queryInputLoc` | `!Loc` | `(.queryInputLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1002` | `RouterSelectionDecl` | data | yes | `rsPredicate` | `predicate` | `!Expr` | `(.predicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1003` | `RouterSelectionDecl` | data | yes | `rsRecipient` | `recipient` | `!Expr` | `(.recipient)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1004` | `RouterSelectionDecl` | data | yes | `rsLimit` | `limit` | `!(Maybe (Natural, Loc))` | `(.limit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1005` | `RouterSelectionDecl` | data | yes | `rsOrder` | `order` | `!Name` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1006` | `RouterSelectionDecl` | data | yes | `rsOrderLoc` | `orderLoc` | `!Loc` | `(.orderLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1007` | `RouterSelectionDecl` | data | yes | `rsDedupe` | `dedupe` | `!Name` | `(.dedupe)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1008` | `RouterSelectionDecl` | data | yes | `rsDedupeLoc` | `dedupeLoc` | `!Loc` | `(.dedupeLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1009` | `RouterSelectionDecl` | data | yes | `rsEmptyPolicy` | `emptyPolicy` | `!SelectionDispositionSyntax` | `(.emptyPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1010` | `RouterSelectionDecl` | data | yes | `rsEmptyPolicyLoc` | `emptyPolicyLoc` | `!Loc` | `(.emptyPolicyLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1011` | `RouterSelectionDecl` | data | yes | `rsFailurePolicy` | `failurePolicy` | `!SelectionDispositionSyntax` | `(.failurePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1012` | `RouterSelectionDecl` | data | yes | `rsFailurePolicyLoc` | `failurePolicyLoc` | `!Loc` | `(.failurePolicyLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1013` | `RouterSelectionDecl` | data | yes | `rsRedelivery` | `redelivery` | `!Name` | `(.redelivery)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1014` | `RouterSelectionDecl` | data | yes | `rsRedeliveryLoc` | `redeliveryLoc` | `!Loc` | `(.redeliveryLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1015` | `RouterSelectionDecl` | data | yes | `rsPartial` | `partial` | `!Name` | `(.partial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1016` | `RouterSelectionDecl` | data | yes | `rsPartialLoc` | `partialLoc` | `!Loc` | `(.partialLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1017` | `RouterSelectionDecl` | data | yes | `rsLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1028` | `ResolveDecl` | data | yes | `rvSource` | `source` | `!ResolveSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1029` | `ResolveDecl` | data | yes | `rvRow` | `row` | `![Name]` | `(.row)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1030` | `ResolveDecl` | data | yes | `rvLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1035` | `RouterDispatchNode` | data | yes | `rdCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1036` | `RouterDispatchNode` | data | yes | `rdFields` | `fields` | `![FieldBinding]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1037` | `RouterDispatchNode` | data | yes | `rdDisposition` | `disposition` | `!DispatchDisposition` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1038` | `RouterDispatchNode` | data | yes | `rdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1046` | `RouterNode` | data | yes | `rtId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1047` | `RouterNode` | data | yes | `rtName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1048` | `RouterNode` | data | yes | `rtInput` | `input` | `!InputDecl` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1049` | `RouterNode` | data | yes | `rtKey` | `key` | `!CorrelateDecl` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1050` | `RouterNode` | data | yes | `rtResolve` | `resolve` | `!ResolveDecl` | `(.resolve)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1051` | `RouterNode` | data | yes | `rtTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1052` | `RouterNode` | data | yes | `rtProjections` | `projections` | `![Name]` | `(.projections)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1053` | `RouterNode` | data | yes | `rtDispatch` | `dispatch` | `!RouterDispatchNode` | `(.dispatch)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1054` | `RouterNode` | data | yes | `rtRejected` | `rejected` | `!PolicyChoice` | `(.rejected)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1055` | `RouterNode` | data | yes | `rtPoison` | `poison` | `!PolicyChoice` | `(.poison)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1056` | `RouterNode` | data | yes | `rtLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1067` | `ContractField` | data | yes | `cfName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1068` | `ContractField` | data | yes | `cfSelector` | `selector` | `!(Maybe Name)` | `(.selector)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1069` | `ContractField` | data | yes | `cfWireKey` | `wireKey` | `!(Maybe Text)` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1070` | `ContractField` | data | yes | `cfType` | `valueType` | `!ContractType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1071` | `ContractField` | data | yes | `cfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1077` | `ContractEvent` | data | yes | `ceName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1078` | `ContractEvent` | data | yes | `ceTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1079` | `ContractEvent` | data | yes | `ceFields` | `fields` | `![ContractField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1087` | `ContractNode` | data | yes | `ctrName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1088` | `ContractNode` | data | yes | `ctrSchemaVersion` | `schemaVersion` | `!Int` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1089` | `ContractNode` | data | yes | `ctrDiscriminator` | `discriminator` | `!Name` | `(.discriminator)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1091` | `ContractNode` | data | yes | `ctrTopics` | `topics` | `![(Name, Text)]` | `(.topics)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1092` | `ContractNode` | data | yes | `ctrEvents` | `events` | `![ContractEvent]` | `(.events)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1093` | `ContractNode` | data | yes | `ctrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1109` | `BindRow` | data | yes | `brField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1110` | `BindRow` | data | yes | `brSource` | `source` | `!WireSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1111` | `BindRow` | data | yes | `brRequired` | `required` | `!Bool` | `(.required)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1112` | `BindRow` | data | yes | `brCrossCheck` | `crossCheck` | `!Bool` | `(.crossCheck)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1128` | `DispositionRow` | data | yes | `drOutcome` | `outcome` | `!Name` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1129` | `DispositionRow` | data | yes | `drAction` | `action` | `!InboxAction` | `(.action)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1130` | `DispositionRow` | data | yes | `drLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1137` | `DecodeSpec` | data | yes | `decEnvelope` | `envelope` | `!Text` | `(.envelope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1138` | `DecodeSpec` | data | yes | `decBodyStrict` | `bodyStrict` | `!Bool` | `(.bodyStrict)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1139` | `DecodeSpec` | data | yes | `decBodySchemaVersion` | `bodySchemaVersion` | `!Int` | `(.bodySchemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1155` | `IntakeNode` | data | yes | `inkName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1156` | `IntakeNode` | data | yes | `inkContract` | `contract` | `!Name` | `(.contract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1157` | `IntakeNode` | data | yes | `inkTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1158` | `IntakeNode` | data | yes | `inkAccept` | `accept` | `![Name]` | `(.accept)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1159` | `IntakeNode` | data | yes | `inkBinds` | `binds` | `![BindRow]` | `(.binds)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1160` | `IntakeNode` | data | yes | `inkDedupeKey` | `dedupeKey` | `!Name` | `(.dedupeKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1161` | `IntakeNode` | data | yes | `inkDedupePolicy` | `dedupePolicy` | `!Name` | `(.dedupePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1162` | `IntakeNode` | data | yes | `idempotence` | `idempotence` | `!IdempotenceMode` | `(.idempotence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1163` | `IntakeNode` | data | yes | `inkPersist` | `persist` | `!InkPersist` | `(.persist)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1164` | `IntakeNode` | data | yes | `inkDecode` | `decode` | `!DecodeSpec` | `(.decode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1165` | `IntakeNode` | data | yes | `inkDisposition` | `disposition` | `![DispositionRow]` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1166` | `IntakeNode` | data | yes | `inkLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1173` | `DeriveSpec` | newtype | yes | `dsPrefix` | `dsPrefix` | `Maybe Text` | `(.dsPrefix)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1178` | `EmitMapRow` | data | yes | `emrValue` | `value` | `!Text` | `(.value)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1179` | `EmitMapRow` | data | yes | `emrEvent` | `event` | `!Name` | `(.event)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1180` | `EmitMapRow` | data | yes | `emrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1187` | `EmitNode` | data | yes | `emName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1188` | `EmitNode` | data | yes | `emContract` | `contract` | `!Name` | `(.contract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1189` | `EmitNode` | data | yes | `emTopic` | `topic` | `!Name` | `(.topic)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1190` | `EmitNode` | data | yes | `emSource` | `source` | `!Text` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1191` | `EmitNode` | data | yes | `emKey` | `key` | `!Name` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1192` | `EmitNode` | data | yes | `emDiscriminant` | `discriminant` | `!Name` | `(.discriminant)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1193` | `EmitNode` | data | yes | `emMap` | `map` | `![EmitMapRow]` | `(.map)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1195` | `EmitNode` | data | yes | `emSkip` | `skip` | `!Bool` | `(.skip)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1196` | `EmitNode` | data | yes | `emMessageId` | `messageId` | `!DeriveSpec` | `(.messageId)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1197` | `EmitNode` | data | yes | `emIdempotencyKey` | `idempotencyKey` | `!DeriveSpec` | `(.idempotencyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1198` | `EmitNode` | data | yes | `emLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1204` | `BackoffSpec` | data | yes | `boKind` | `kind` | `!Name` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1205` | `BackoffSpec` | data | yes | `boWindow` | `window` | `!Text` | `(.window)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1206` | `BackoffSpec` | data | yes | `boMax` | `max` | `!(Maybe Text)` | `(.max)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1207` | `BackoffSpec` | data | yes | `boMultiplier` | `multiplier` | `!(Maybe Text)` | `(.multiplier)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1213` | `PublisherNode` | data | yes | `pubName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1214` | `PublisherNode` | data | yes | `pubEmit` | `emit` | `!Name` | `(.emit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1215` | `PublisherNode` | data | yes | `pubOrdering` | `ordering` | `!Name` | `(.ordering)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1216` | `PublisherNode` | data | yes | `pubMaxAttempts` | `maxAttempts` | `!Int` | `(.maxAttempts)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1217` | `PublisherNode` | data | yes | `pubBackoff` | `backoff` | `!BackoffSpec` | `(.backoff)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1219` | `PublisherNode` | data | yes | `pubOutboxField` | `outboxField` | `!Name` | `(.outboxField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1220` | `PublisherNode` | data | yes | `pubLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1250` | `WqField` | data | yes | `wqfName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1251` | `WqField` | data | yes | `wqfWire` | `wire` | `!Text` | `(.wire)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1252` | `WqField` | data | yes | `wqfType` | `valueType` | `!QueuePayloadType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1253` | `WqField` | data | yes | `wqfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1260` | `WqDispRow` | data | yes | `wqdOutcome` | `outcome` | `!Name` | `(.outcome)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1261` | `WqDispRow` | data | yes | `wqdAction` | `action` | `!InboxAction` | `(.action)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1262` | `WqDispRow` | data | yes | `wqdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1272` | `WqGroupKey` | data | yes | `gkField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1273` | `WqGroupKey` | data | yes | `gkVia` | `via` | `!Name` | `(.via)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1274` | `WqGroupKey` | data | yes | `gkFixture` | `fixture` | `!(Maybe Text)` | `(.fixture)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1289` | `WorkqueueNode` | data | yes | `wqName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1290` | `WorkqueueNode` | data | yes | `wqLogical` | `logical` | `!Text` | `(.logical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1291` | `WorkqueueNode` | data | yes | `wqPhysical` | `physical` | `!Text` | `(.physical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1292` | `WorkqueueNode` | data | yes | `wqDlq` | `dlq` | `!Text` | `(.dlq)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1293` | `WorkqueueNode` | data | yes | `wqTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1294` | `WorkqueueNode` | data | yes | `wqOrdering` | `ordering` | `!WqOrdering` | `(.ordering)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1295` | `WorkqueueNode` | data | yes | `wqGroupKey` | `groupKey` | `!(Maybe WqGroupKey)` | `(.groupKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1296` | `WorkqueueNode` | data | yes | `wqProvision` | `provision` | `!WqProvision` | `(.provision)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1297` | `WorkqueueNode` | data | yes | `wqPayloadName` | `payloadName` | `!Name` | `(.payloadName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1298` | `WorkqueueNode` | data | yes | `wqPayload` | `payload` | `![WqField]` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1299` | `WorkqueueNode` | data | yes | `wqMaxRetries` | `maxRetries` | `!Int` | `(.maxRetries)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1300` | `WorkqueueNode` | data | yes | `wqDelay` | `delay` | `!Text` | `(.delay)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1301` | `WorkqueueNode` | data | yes | `wqDlqOn` | `dlqOn` | `!Bool` | `(.dlqOn)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1302` | `WorkqueueNode` | data | yes | `wqDisposition` | `disposition` | `![WqDispRow]` | `(.disposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1303` | `WorkqueueNode` | data | yes | `wqLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1310` | `PgmqDispatchNode` | data | yes | `pdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1311` | `PgmqDispatchNode` | data | yes | `pdSourceReadModel` | `sourceReadModel` | `!Name` | `(.sourceReadModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1312` | `PgmqDispatchNode` | data | yes | `pdSourceKey` | `sourceKey` | `!Name` | `(.sourceKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1313` | `PgmqDispatchNode` | data | yes | `pdFanoutBody` | `fanoutBody` | `!Name` | `(.fanoutBody)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1314` | `PgmqDispatchNode` | data | yes | `pdDedupKey` | `dedupKey` | `!Name` | `(.dedupKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1315` | `PgmqDispatchNode` | data | yes | `pdDedupReadModel` | `dedupReadModel` | `!Name` | `(.dedupReadModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1316` | `PgmqDispatchNode` | data | yes | `pdDedupReadModelField` | `dedupReadModelField` | `!Text` | `(.dedupReadModelField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1317` | `PgmqDispatchNode` | data | yes | `pdDedupQueue` | `dedupQueue` | `!Name` | `(.dedupQueue)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1318` | `PgmqDispatchNode` | data | yes | `pdDedupQueueField` | `dedupQueueField` | `!Text` | `(.dedupQueueField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1319` | `PgmqDispatchNode` | data | yes | `pdEnqueueTo` | `enqueueTo` | `!Name` | `(.enqueueTo)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1320` | `PgmqDispatchNode` | data | yes | `pdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1328` | `RmColumn` | data | yes | `rmcName` | `rmcName` | `!Text` | `(.rmcName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1329` | `RmColumn` | data | yes | `rmcType` | `rmcType` | `!Text` | `(.rmcType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1330` | `RmColumn` | data | yes | `rmcRequired` | `rmcRequired` | `!Bool` | `(.rmcRequired)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1359` | `ReadModelSupply` | data | yes | `legacyConsistency` | `legacyConsistency` | `!Consistency` | `(.legacyConsistency)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1360` | `ReadModelSupply` | data | yes | `legacyScope` | `legacyScope` | `!(Maybe RmScope)` | `(.legacyScope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1361` | `ReadModelSupply` | data | yes | `legacyFeed` | `legacyFeed` | `!RmFeed` | `(.legacyFeed)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1362` | `ReadModelSupply` | data | yes | `legacySubscription` | `legacySubscription` | `!(Maybe Text)` | `(.legacySubscription)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1370` | `ReadModelQueryTypes` | data | yes | `input` | `input` | `!TypeExpr` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1371` | `ReadModelQueryTypes` | data | yes | `result` | `result` | `!TypeExpr` | `(.result)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1372` | `ReadModelQueryTypes` | data | yes | `inputLoc` | `inputLoc` | `!Loc` | `(.inputLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1373` | `ReadModelQueryTypes` | data | yes | `resultLoc` | `resultLoc` | `!Loc` | `(.resultLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1380` | `ReadModelNode` | data | yes | `rmName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1381` | `ReadModelNode` | data | yes | `rmTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1382` | `ReadModelNode` | data | yes | `rmSchema` | `schema` | `!Text` | `(.schema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1383` | `ReadModelNode` | data | yes | `rmColumns` | `columns` | `![RmColumn]` | `(.columns)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1384` | `ReadModelNode` | data | yes | `rmVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1385` | `ReadModelNode` | data | yes | `rmShape` | `shape` | `!Text` | `(.shape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1386` | `ReadModelNode` | data | yes | `rmFreshness` | `freshness` | `!QueryFreshnessNode` | `(.freshness)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1387` | `ReadModelNode` | data | yes | `rmSupply` | `supply` | `!ReadModelSupply` | `(.supply)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1388` | `ReadModelNode` | data | yes | `rmGroup` | `group` | `!(Maybe Name)` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1389` | `ReadModelNode` | data | yes | `rmObservedTargets` | `observedTargets` | `![Name]` | `(.observedTargets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1390` | `ReadModelNode` | data | yes | `rmBackingTarget` | `backingTarget` | `!(Maybe Name)` | `(.backingTarget)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1391` | `ReadModelNode` | data | yes | `queryTypes` | `queryTypes` | `!(Maybe ReadModelQueryTypes)` | `(.queryTypes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1392` | `ReadModelNode` | data | yes | `rmLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1423` | `ProjectionTargetNode` | data | yes | `ptName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1424` | `ProjectionTargetNode` | data | yes | `ptSchema` | `schema` | `!Text` | `(.schema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1425` | `ProjectionTargetNode` | data | yes | `ptTable` | `table` | `!Text` | `(.table)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1426` | `ProjectionTargetNode` | data | yes | `ptReset` | `reset` | `!TargetResetPolicy` | `(.reset)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1427` | `ProjectionTargetNode` | data | yes | `ptDependsOn` | `dependsOn` | `![Name]` | `(.dependsOn)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1428` | `ProjectionTargetNode` | data | yes | `ptLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1434` | `RebuildGroupNode` | data | yes | `rgName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1435` | `RebuildGroupNode` | data | yes | `rgTargets` | `targets` | `![Name]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1436` | `RebuildGroupNode` | data | yes | `rgOrder` | `order` | `![Name]` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1437` | `RebuildGroupNode` | data | yes | `rgLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1448` | `PromotionObjectNode` | data | yes | `rpoKind` | `kind` | `!PromotionObjectKindNode` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1449` | `PromotionObjectNode` | data | yes | `rpoGenerationName` | `generationName` | `!Text` | `(.generationName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1450` | `PromotionObjectNode` | data | yes | `rpoCanonicalName` | `canonicalName` | `!Text` | `(.canonicalName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1457` | `RevisionTargetNode` | data | yes | `prtTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1458` | `RevisionTargetNode` | data | yes | `prtSchemaVersion` | `schemaVersion` | `!Text` | `(.schemaVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1459` | `RevisionTargetNode` | data | yes | `prtProvisioner` | `provisioner` | `!Text` | `(.provisioner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1460` | `RevisionTargetNode` | data | yes | `prtProvisionerVersion` | `provisionerVersion` | `!Int` | `(.provisionerVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1461` | `RevisionTargetNode` | data | yes | `prtExpectedShape` | `expectedShape` | `!Text` | `(.expectedShape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1462` | `RevisionTargetNode` | data | yes | `prtValidator` | `validator` | `!Text` | `(.validator)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1463` | `RevisionTargetNode` | data | yes | `prtValidatorVersion` | `validatorVersion` | `!Int` | `(.validatorVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1464` | `RevisionTargetNode` | data | yes | `prtPromotionObjects` | `promotionObjects` | `![PromotionObjectNode]` | `(.promotionObjects)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1469` | `ProjectionRevisionNode` | data | yes | `prvName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1470` | `ProjectionRevisionNode` | data | yes | `prvGroup` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1471` | `ProjectionRevisionNode` | data | yes | `prvTargets` | `targets` | `![RevisionTargetNode]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1472` | `ProjectionRevisionNode` | data | yes | `prvLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1480` | `ExternalReadNode` | data | yes | `erName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1481` | `ExternalReadNode` | data | yes | `erVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1482` | `ExternalReadNode` | data | yes | `erQueryModel` | `queryModel` | `!Name` | `(.queryModel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1483` | `ExternalReadNode` | data | yes | `erResultSchema` | `resultSchema` | `!Text` | `(.resultSchema)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1484` | `ExternalReadNode` | data | yes | `erResultType` | `resultType` | `!Text` | `(.resultType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1485` | `ExternalReadNode` | data | yes | `erCompatibleRevisions` | `compatibleRevisions` | `![Name]` | `(.compatibleRevisions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1486` | `ExternalReadNode` | data | yes | `erSurfaceGeneration` | `surfaceGeneration` | `!Int` | `(.surfaceGeneration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1487` | `ExternalReadNode` | data | yes | `erLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1522` | `ProjectionOwnerNode` | data | yes | `poName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1523` | `ProjectionOwnerNode` | data | yes | `poSources` | `sources` | `![CatalogSource]` | `(.sources)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1524` | `ProjectionOwnerNode` | data | yes | `poDelivery` | `delivery` | `!ProjectionDelivery` | `(.delivery)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1525` | `ProjectionOwnerNode` | data | yes | `poGroup` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1526` | `ProjectionOwnerNode` | data | yes | `poTargets` | `targets` | `![Name]` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1527` | `ProjectionOwnerNode` | data | yes | `poOrder` | `order` | `!Int` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1528` | `ProjectionOwnerNode` | data | yes | `poSubscription` | `subscription` | `!(Maybe Text)` | `(.subscription)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1529` | `ProjectionOwnerNode` | data | yes | `poDedup` | `dedup` | `!(Maybe Text)` | `(.dedup)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1530` | `ProjectionOwnerNode` | data | yes | `poCheckpointOnMissing` | `checkpointOnMissing` | `![CheckpointOnMissingNode]` | `(.checkpointOnMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1531` | `ProjectionOwnerNode` | data | yes | `poReplay` | `replay` | `!ProjectionReplayPolicy` | `(.replay)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1532` | `ProjectionOwnerNode` | data | yes | `poLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1558` | `WorkflowNode` | data | yes | `wfId` | `id` | `!Name` | `(.id)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1560` | `WorkflowNode` | data | yes | `wfStable` | `stable` | `!Text` | `(.stable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1561` | `WorkflowNode` | data | yes | `wfInput` | `input` | `!Name` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1562` | `WorkflowNode` | data | yes | `wfInputFields` | `inputFields` | `![Field]` | `(.inputFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1563` | `WorkflowNode` | data | yes | `wfOutput` | `output` | `!Name` | `(.output)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1565` | `WorkflowNode` | data | yes | `wfIdField` | `idField` | `!(Maybe Name)` | `(.idField)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1566` | `WorkflowNode` | data | yes | `wfIdVia` | `idVia` | `!Name` | `(.idVia)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1567` | `WorkflowNode` | data | yes | `wfBody` | `body` | `![WfBodyItem]` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1568` | `WorkflowNode` | data | yes | `wfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1588` | `OperationNode` | data | yes | `opName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1589` | `OperationNode` | data | yes | `opShape` | `shape` | `!OperationShape` | `(.shape)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1590` | `OperationNode` | data | yes | `opLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1636` | `Spec` | data | yes | `specContext` | `context` | `!Name` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1637` | `Spec` | data | yes | `specModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1638` | `Spec` | data | yes | `specLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1639` | `Spec` | data | yes | `specIds` | `ids` | `![IdDecl]` | `(.ids)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1640` | `Spec` | data | yes | `specEnums` | `enums` | `![EnumDecl]` | `(.enums)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1641` | `Spec` | data | yes | `specRules` | `rules` | `![RuleDecl]` | `(.rules)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1642` | `Spec` | data | yes | `specNominalScalars` | `nominalScalars` | `![NominalScalarDecl]` | `(.nominalScalars)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1643` | `Spec` | data | yes | `specMapped` | `mapped` | `![MappedDecl]` | `(.mapped)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Grammar.hs:1644` | `Spec` | data | yes | `specNodes` | `nodes` | `![Node]` | `(.nodes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:41` | `HaskellReference` | data | yes | `referenceModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:42` | `HaskellReference` | data | yes | `referenceName` | `name` | `!Text` | `(.name)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:43` | `HaskellReference` | data | yes | `referenceNamespace` | `namespace` | `!HaskellNamespace` | `(.namespace)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:44` | `HaskellReference` | data | yes | `referenceQualification` | `qualification` | `!QualificationPreference` | `(.qualification)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:49` | `ImportEnvironment` | data | yes | `targetModule` | `targetModule` | `!Text` | `(.targetModule)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:50` | `ImportEnvironment` | data | yes | `localNames` | `localNames` | `!(Set Text)` | `(.localNames)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:51` | `ImportEnvironment` | data | yes | `reservedQualifiers` | `reservedQualifiers` | `!(Set Text)` | `(.reservedQualifiers)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:64` | `HaskellImportPlan` | data | no | `importPlanTargetModule` | `targetModule` | `!Text` | `(.targetModule)`, pattern, or construction | Haskell API and runtime semantics | `none` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:65` | `HaskellImportPlan` | data | no | `importPlanDeclarations` | `declarations` | `!(Set Text)` | `(.declarations)`, pattern, or construction | Haskell API and runtime semantics | `none` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellImport.hs:66` | `HaskellImportPlan` | data | no | `importPlanReferences` | `references` | `!(Map HaskellReference Text)` | `(.references)`, pattern, or construction | Haskell API and runtime semantics | `none` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:62` | `DerivedHaskellName` | data | no | `upperCamel` | `upperCamel` | `!UpperCamelName` | `(.upperCamel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:63` | `DerivedHaskellName` | data | no | `lowerCamel` | `lowerCamel` | `!LowerCamelName` | `(.lowerCamel)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:96` | `NameSite` | data | no | `siteKind` | `kind` | `!NameSiteKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:97` | `NameSite` | data | no | `siteLogicalName` | `logicalName` | `!Text` | `(.logicalName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:98` | `NameSite` | data | no | `siteOwner` | `owner` | `!Text` | `(.owner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:99` | `NameSite` | data | no | `siteLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:108` | `HaskellOccurrenceKey` | data | no | `occurrenceModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:109` | `HaskellOccurrenceKey` | data | no | `occurrenceSpace` | `space` | `!HaskellOccurrenceSpace` | `(.space)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:110` | `HaskellOccurrenceKey` | data | no | `occurrenceScope` | `scope` | `!Text` | `(.scope)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:111` | `HaskellOccurrenceKey` | data | no | `occurrenceName` | `name` | `!Text` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:116` | `PlannedOccurrence` | data | no | `plannedOccurrenceKey` | `key` | `!HaskellOccurrenceKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellName.hs:117` | `PlannedOccurrence` | data | no | `plannedOccurrenceSite` | `site` | `!NameSite` | `(.site)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:28` | `SourceMove` | data | yes | `moveRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:29` | `SourceMove` | data | yes | `moveKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:30` | `SourceMove` | data | yes | `moveOldModule` | `oldModule` | `!Text` | `(.oldModule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:31` | `SourceMove` | data | yes | `moveNewModule` | `newModule` | `!Text` | `(.newModule)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:32` | `SourceMove` | data | yes | `moveOldPath` | `oldPath` | `!FilePath` | `(.oldPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:33` | `SourceMove` | data | yes | `moveNewPath` | `newPath` | `!FilePath` | `(.newPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:34` | `SourceMove` | data | yes | `moveBackupPath` | `backupPath` | `!FilePath` | `(.backupPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:38` | `SourceMove` | data | yes | `moveContentDigest` | `contentDigest` | `!(Maybe Text)` | `(.contentDigest)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/HaskellSourceMove.hs:41` | `SourceMove` | data | yes | `moveTransformedDigest` | `transformedDigest` | `!(Maybe Text)` | `(.transformedDigest)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:97` | `SourceLanguage` | data | yes | `declaredLanguageVersion` | `declaredLanguageVersion` | `!LanguageVersion` | `(.declaredLanguageVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `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:478` | `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:479` | `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:480` | `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:481` | `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:482` | `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:483` | `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:550` | `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:551` | `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)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:26` | `ConsumerPlan` | data | yes | `consumerPackages` | `packages` | `![Text]` | `(.packages)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:27` | `ConsumerPlan` | data | yes | `consumerModules` | `modules` | `![Text]` | `(.modules)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:28` | `ConsumerPlan` | data | yes | `consumerMappings` | `mappings` | `![MappingIdentity]` | `(.mappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:34` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:35` | `MappingIdentity` | data | yes | `mappingCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:36` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:37` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:38` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:39` | `MappingIdentity` | data | yes | `mappingBindingSymbol` | `bindingSymbol` | `!Text` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:40` | `MappingIdentity` | data | yes | `mappingBindingVersion` | `bindingVersion` | `!Text` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:43` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:44` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:45` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:46` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:47` | `MappingIdentity` | data | yes | `mappingCodecIdentity` | `codecIdentity` | `!Text` | `(.codecIdentity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:48` | `MappingIdentity` | data | yes | `mappingCodecVersion` | `codecVersion` | `!Text` | `(.codecVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:51` | `MappingIdentity` | data | yes | `mappingSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:52` | `MappingIdentity` | data | yes | `mappingNominalCategory` | `nominalCategory` | `!Text` | `(.nominalCategory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:53` | `MappingIdentity` | data | yes | `mappingNominalRepresentation` | `nominalRepresentation` | `!Text` | `(.nominalRepresentation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:54` | `MappingIdentity` | data | yes | `mappingCanonicalType` | `canonicalType` | `!Text` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:55` | `MappingIdentity` | data | yes | `mappingPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:56` | `MappingIdentity` | data | yes | `mappingModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:57` | `MappingIdentity` | data | yes | `mappingType` | `valueType` | `!Text` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:58` | `MappingIdentity` | data | yes | `mappingBindingSymbol` | `bindingSymbol` | `!Text` | `(.bindingSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:59` | `MappingIdentity` | data | yes | `mappingBindingVersion` | `bindingVersion` | `!Text` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:60` | `MappingIdentity` | data | yes | `mappingFixtureSymbol` | `fixtureSymbol` | `!Text` | `(.fixtureSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedConsumer.hs:61` | `MappingIdentity` | data | yes | `mappingInitialSymbol` | `initialSymbol` | `!(Maybe Text)` | `(.initialSymbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:28` | `MappedFinding` | data | yes | `mfDeclaration` | `declaration` | `!Name` | `(.declaration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:29` | `MappedFinding` | data | yes | `mfLeaf` | `leaf` | `!Text` | `(.leaf)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:30` | `MappedFinding` | data | yes | `mfCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:31` | `MappedFinding` | data | yes | `mfDetail` | `detail` | `!Text` | `(.detail)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:32` | `MappedFinding` | data | yes | `mfUsePaths` | `usePaths` | `![UsePath]` | `(.usePaths)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/MappedDiff.hs:33` | `MappedFinding` | data | yes | `mfOldUnknownFields` | `oldUnknownFields` | `!(Maybe UnknownFields)` | `(.oldUnknownFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:70` | `CheckedNominalEquality` | data | yes | `equalityKeyRepresentation` | `keyRepresentation` | `!NominalEqualityKey` | `(.keyRepresentation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:71` | `CheckedNominalEquality` | data | yes | `equalityDomain` | `domain` | `!NominalEqualityDomain` | `(.domain)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:72` | `CheckedNominalEquality` | data | yes | `equalityContractVersion` | `contractVersion` | `!Text` | `(.contractVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:82` | `ResolvedNominalType` | data | yes | `resolvedNominalName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:83` | `ResolvedNominalType` | data | yes | `resolvedNominalRepresentation` | `representation` | `!NominalRepresentation` | `(.representation)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:84` | `ResolvedNominalType` | data | yes | `resolvedNominalOwnership` | `ownership` | `!NominalOwnership` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/NominalType.hs:85` | `ResolvedNominalType` | data | yes | `resolvedNominalLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:75` | `ContextualParseFailure` | data | no | `contextualFailureCode` | `code` | `!SourceLanguageErrorCode` | `(.code)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:76` | `ContextualParseFailure` | data | no | `contextualFailureFeature` | `feature` | `!(Maybe LanguageFeature)` | `(.feature)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Parser/Core.hs:77` | `ContextualParseFailure` | data | no | `contextualFailureSpan` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Parser/Preamble.hs:60` | `InitialLanguageClause` | data | no | `initialLanguageSpan` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `none` |
+| `keiro-dsl/src/Keiro/Dsl/Parser/Preamble.hs:61` | `InitialLanguageClause` | data | no | `initialLanguageText` | `text` | `!Text` | `(.text)`, pattern, or construction | Haskell API and runtime semantics | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:42` | `CheckedFollowUp` | newtype | yes | `syntax` | `syntax` | `FollowUp` | `(.syntax)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:46` | `CheckedReactionArm` | data | yes | `input` | `input` | `!Name` | `(.input)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:47` | `CheckedReactionArm` | data | yes | `ordinal` | `ordinal` | `!Int` | `(.ordinal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:48` | `CheckedReactionArm` | data | yes | `guard` | `guard` | `!CheckedReactionGuard` | `(.guard)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:49` | `CheckedReactionArm` | data | yes | `body` | `body` | `!ArmBody` | `(.body)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:53` | `CheckedReactionTimer` | newtype | yes | `syntax` | `syntax` | `ReactionTimerNode` | `(.syntax)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:57` | `CheckedProcessReaction` | data | yes | `version` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:58` | `CheckedProcessReaction` | data | yes | `inputs` | `inputs` | `!(NonEmpty InputDecl)` | `(.inputs)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:59` | `CheckedProcessReaction` | data | yes | `arms` | `arms` | `![CheckedReactionArm]` | `(.arms)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:60` | `CheckedProcessReaction` | data | yes | `timers` | `timers` | `![CheckedReactionTimer]` | `(.timers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:61` | `CheckedProcessReaction` | data | yes | `fingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:62` | `CheckedProcessReaction` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:63` | `CheckedProcessReaction` | data | yes | `holeObligations` | `holeObligations` | `![Text]` | `(.holeObligations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:90` | `ProcessReactionDiagnostic` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:91` | `ProcessReactionDiagnostic` | data | yes | `code` | `code` | `!ProcessReactionDiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProcessReaction.hs:92` | `ProcessReactionDiagnostic` | data | yes | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:39` | `ProjectionMappedRoot` | data | yes | `consumer` | `consumer` | `!DerivedMappedConsumer` | `(.consumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:40` | `ProjectionMappedRoot` | data | yes | `declaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:41` | `ProjectionMappedRoot` | data | yes | `path` | `path` | `!UsePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:49` | `ProjectionOperationalImpact` | data | yes | `consumer` | `consumer` | `!DerivedMappedConsumer` | `(.consumer)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:50` | `ProjectionOperationalImpact` | data | yes | `group` | `group` | `!(Maybe Name)` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:51` | `ProjectionOperationalImpact` | data | yes | `targets` | `targets` | `!(Set Name)` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:52` | `ProjectionOperationalImpact` | data | yes | `readModels` | `readModels` | `!(Set Name)` | `(.readModels)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:53` | `ProjectionOperationalImpact` | data | yes | `replayable` | `replayable` | `!Bool` | `(.replayable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:54` | `ProjectionOperationalImpact` | data | yes | `sourceFingerprint` | `sourceFingerprint` | `!Text` | `(.sourceFingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:62` | `UnsupportedProjectionImpact` | data | yes | `source` | `source` | `!UnsupportedProjectionSource` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:63` | `UnsupportedProjectionImpact` | data | yes | `group` | `group` | `!Name` | `(.group)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:64` | `UnsupportedProjectionImpact` | data | yes | `targets` | `targets` | `!(Set Name)` | `(.targets)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:65` | `UnsupportedProjectionImpact` | data | yes | `readModels` | `readModels` | `!(Set Name)` | `(.readModels)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:66` | `UnsupportedProjectionImpact` | data | yes | `replayable` | `replayable` | `!Bool` | `(.replayable)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:71` | `ProjectionMappedImpact` | data | yes | `roots` | `roots` | `![ProjectionMappedRoot]` | `(.roots)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:72` | `ProjectionMappedImpact` | data | yes | `consumers` | `consumers` | `!(Map MappedKey (Set DerivedMappedConsumer))` | `(.consumers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:73` | `ProjectionMappedImpact` | data | yes | `operations` | `operations` | `!(Map DerivedMappedConsumer ProjectionOperationalImpact)` | `(.operations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionMappedImpact.hs:74` | `ProjectionMappedImpact` | data | yes | `unsupported` | `unsupported` | `![UnsupportedProjectionImpact]` | `(.unsupported)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:21` | `ResolvedProjectionSupply` | data | yes | `supplyQueryModel` | `queryModel` | `!Name` | `(.queryModel)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:22` | `ResolvedProjectionSupply` | data | yes | `supplyProjectionOwner` | `projectionOwner` | `!Name` | `(.projectionOwner)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:23` | `ResolvedProjectionSupply` | data | yes | `supplyRebuildGroup` | `rebuildGroup` | `!Name` | `(.rebuildGroup)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:24` | `ResolvedProjectionSupply` | data | yes | `supplyObservedTargets` | `observedTargets` | `!(NonEmpty Name)` | `(.observedTargets)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:25` | `ResolvedProjectionSupply` | data | yes | `supplyQueryLoc` | `queryLoc` | `!Loc` | `(.queryLoc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:26` | `ResolvedProjectionSupply` | data | yes | `supplyOwnerLoc` | `ownerLoc` | `!Loc` | `(.ownerLoc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:46` | `ProjectionSupplyAnalysis` | data | yes | `resolvedProjectionSupplies` | `resolvedProjectionSupplies` | `![ResolvedProjectionSupply]` | `(.resolvedProjectionSupplies)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ProjectionSupply.hs:47` | `ProjectionSupplyAnalysis` | data | yes | `projectionSupplyIssues` | `projectionSupplyIssues` | `![ProjectionSupplyIssue]` | `(.projectionSupplyIssues)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:35` | `QueryContractIdentity` | data | yes | `qciReadModel` | `readModel` | `!Name` | `(.readModel)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:36` | `QueryContractIdentity` | data | yes | `qciPosition` | `position` | `!QueryContractPosition` | `(.position)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:37` | `QueryContractIdentity` | data | yes | `qciTypeExpression` | `typeExpression` | `!Text` | `(.typeExpression)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:38` | `QueryContractIdentity` | data | yes | `qciMappedDependencies` | `mappedDependencies` | `![Name]` | `(.mappedDependencies)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:43` | `QueryContractDrift` | data | yes | `qcdKey` | `key` | `!(Name, QueryContractPosition)` | `(.key)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:44` | `QueryContractDrift` | data | yes | `qcdPrevious` | `previous` | `!(Maybe QueryContractIdentity)` | `(.previous)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReadModelQueryContract.hs:45` | `QueryContractDrift` | data | yes | `qcdCurrent` | `current` | `!(Maybe QueryContractIdentity)` | `(.current)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:56` | `AggregateImpact` | data | yes | `eventTypes` | `eventTypes` | `!(Set Name)` | `(.eventTypes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:57` | `AggregateImpact` | data | yes | `includeSnapshotStreams` | `includeSnapshotStreams` | `!Bool` | `(.includeSnapshotStreams)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:72` | `CatalogReplayImpact` | data | yes | `affectedGroups` | `affectedGroups` | `!(Set Name)` | `(.affectedGroups)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:73` | `CatalogReplayImpact` | data | yes | `affectedTargets` | `affectedTargets` | `!(Set Name)` | `(.affectedTargets)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:74` | `CatalogReplayImpact` | data | yes | `affectedSources` | `affectedSources` | `!(Set Text)` | `(.affectedSources)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:75` | `CatalogReplayImpact` | data | yes | `affectedAdapters` | `affectedAdapters` | `!(Set Name)` | `(.affectedAdapters)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:76` | `CatalogReplayImpact` | data | yes | `invalidatesRunningFingerprint` | `invalidatesRunningFingerprint` | `!Bool` | `(.invalidatesRunningFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:217` | `ReplaySurfaceContext` | data | no | `surfaceSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:218` | `ReplaySurfaceContext` | data | no | `surfaceGraphResult` | `graphResult` | `Either (NE.NonEmpty TypeGraphError) TypeGraph` | `(.graphResult)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ReplayImpact.hs:219` | `ReplaySurfaceContext` | data | no | `surfaceSymbols` | `symbols` | `AggregateSymbols` | `(.symbols)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:54` | `CheckedReadModelQuery` | data | yes | `checkedQueryName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:55` | `CheckedReadModelQuery` | data | yes | `checkedQueryInputType` | `inputType` | `!ResolvedTypeExpr` | `(.inputType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:56` | `CheckedReadModelQuery` | data | yes | `checkedQueryResultType` | `resultType` | `!ResolvedTypeExpr` | `(.resultType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:61` | `CheckedMappedExpr` | data | yes | `checkedMappedExprRoot` | `root` | `!SelectionRoot` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:62` | `CheckedMappedExpr` | data | yes | `checkedMappedExprType` | `valueType` | `!ResolvedTypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:67` | `CheckedMappedType` | data | yes | `checkedMappedTypeKey` | `key` | `!MappedKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:68` | `CheckedMappedType` | data | yes | `checkedMappedTypeConstructor` | `constructor` | `!Name` | `(.constructor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:69` | `CheckedMappedType` | data | yes | `checkedMappedTypeFields` | `fields` | `![ResolvedWireField]` | `(.fields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:87` | `CheckedSelectionPathSegment` | data | yes | `checkedPathField` | `field` | `!Name` | `(.field)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:88` | `CheckedSelectionPathSegment` | data | yes | `checkedPathWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:89` | `CheckedSelectionPathSegment` | data | yes | `checkedPathOwner` | `owner` | `!MappedKey` | `(.owner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:94` | `CheckedScalarExpr` | data | yes | `checkedScalarType` | `valueType` | `!SelectionScalarType` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:95` | `CheckedScalarExpr` | data | yes | `checkedScalarNode` | `node` | `!CheckedScalarNode` | `(.node)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:96` | `CheckedScalarExpr` | data | yes | `checkedScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:137` | `CheckedRouterSelection` | data | yes | `checkedIdentity` | `identity` | `!Text` | `(.identity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:138` | `CheckedRouterSelection` | data | yes | `checkedVersion` | `version` | `!Natural` | `(.version)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:139` | `CheckedRouterSelection` | data | yes | `checkedQuery` | `query` | `!CheckedReadModelQuery` | `(.query)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:140` | `CheckedRouterSelection` | data | yes | `checkedInputBinding` | `inputBinding` | `!CheckedMappedExpr` | `(.inputBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:141` | `CheckedRouterSelection` | data | yes | `checkedRowBinding` | `rowBinding` | `!CheckedMappedType` | `(.rowBinding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:142` | `CheckedRouterSelection` | data | yes | `checkedKey` | `key` | `!CheckedScalarExpr` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:143` | `CheckedRouterSelection` | data | yes | `checkedPredicate` | `predicate` | `!CheckedScalarExpr` | `(.predicate)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:144` | `CheckedRouterSelection` | data | yes | `checkedRecipient` | `recipient` | `!CheckedScalarExpr` | `(.recipient)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:145` | `CheckedRouterSelection` | data | yes | `checkedCommandFields` | `commandFields` | `!(Map Name CheckedScalarExpr)` | `(.commandFields)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:146` | `CheckedRouterSelection` | data | yes | `checkedTarget` | `target` | `!Name` | `(.target)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:147` | `CheckedRouterSelection` | data | yes | `checkedCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:148` | `CheckedRouterSelection` | data | yes | `checkedLimit` | `limit` | `!Natural` | `(.limit)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:149` | `CheckedRouterSelection` | data | yes | `checkedOrder` | `order` | `!CheckedSelectionOrder` | `(.order)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:150` | `CheckedRouterSelection` | data | yes | `checkedDedupe` | `dedupe` | `!CheckedSelectionDedupe` | `(.dedupe)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:151` | `CheckedRouterSelection` | data | yes | `checkedEmptyPolicy` | `emptyPolicy` | `!CheckedEmptySelectionPolicy` | `(.emptyPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:152` | `CheckedRouterSelection` | data | yes | `checkedFailurePolicy` | `failurePolicy` | `!CheckedSelectionFailurePolicy` | `(.failurePolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:153` | `CheckedRouterSelection` | data | yes | `checkedRedeliveryPolicy` | `redeliveryPolicy` | `!CheckedRedeliveryPolicy` | `(.redeliveryPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:154` | `CheckedRouterSelection` | data | yes | `checkedPartialPolicy` | `partialPolicy` | `!CheckedPartialDispatchPolicy` | `(.partialPolicy)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:155` | `CheckedRouterSelection` | data | yes | `checkedFingerprint` | `fingerprint` | `!Text` | `(.fingerprint)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:156` | `CheckedRouterSelection` | data | yes | `checkedUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:193` | `RouterSelectionDiagnostic` | data | yes | `selectionDiagnosticLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `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:155` | `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:156` | `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:157` | `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:158` | `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:166` | `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:167` | `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:168` | `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:199` | `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:201` | `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:203` | `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:211` | `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:212` | `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:220` | `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:221` | `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:222` | `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:223` | `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:335` | `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:336` | `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:337` | `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:338` | `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:339` | `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:490` | `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:491` | `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:492` | `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:493` | `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:494` | `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:495` | `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:496` | `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:497` | `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:498` | `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:499` | `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:500` | `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:501` | `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:502` | `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:503` | `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:504` | `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:505` | `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:507` | `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:508` | `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:509` | `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:510` | `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:511` | `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:512` | `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:513` | `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:514` | `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:515` | `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:516` | `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:518` | `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:520` | `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:524` | `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:525` | `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:533` | `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:534` | `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:535` | `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:536` | `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:543` | `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:545` | `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:547` | `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:549` | `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:2540` | `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:2541` | `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:2556` | `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:2557` | `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:2558` | `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:2559` | `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:2560` | `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:2561` | `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:2562` | `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:2563` | `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:2564` | `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:2565` | `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:2566` | `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:2567` | `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:4384` | `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:4385` | `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:4386` | `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:8476` | `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:8477` | `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:8478` | `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:8479` | `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:8487` | `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:8488` | `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:8489` | `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:8625` | `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:8626` | `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:8702` | `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:8703` | `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)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:49` | `ScaffoldRecord` | data | yes | `recSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:50` | `ScaffoldRecord` | data | yes | `recLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:51` | `ScaffoldRecord` | data | yes | `recNamingEdition` | `namingEdition` | `!GeneratedHaskellNamingEdition` | `(.namingEdition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:52` | `ScaffoldRecord` | data | yes | `recModuleRoles` | `moduleRoles` | `![ScaffoldModuleRoleRow]` | `(.moduleRoles)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:53` | `ScaffoldRecord` | data | yes | `recFiles` | `files` | `![(ModuleKind, FilePath)]` | `(.files)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `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/ScaffoldRun.hs:197` | `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:198` | `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:199` | `GeneratedHaskellEditionUse` | data | yes | `current` | `current` | `!Text` | `(.current)`, 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 | `replacement` | `replacement` | `!Text` | `(.replacement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:201` | `GeneratedHaskellEditionUse` | data | yes | `form` | `form` | `!HoleUseForm` | `(.form)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:214` | `GeneratedHaskellEditionImpact` | data | yes | `fromEdition` | `fromEdition` | `!HaskellName.GeneratedHaskellNamingEdition` | `(.fromEdition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:215` | `GeneratedHaskellEditionImpact` | data | yes | `generatedPaths` | `generatedPaths` | `![FilePath]` | `(.generatedPaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:216` | `GeneratedHaskellEditionImpact` | data | yes | `sidecarPaths` | `sidecarPaths` | `![FilePath]` | `(.sidecarPaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:217` | `GeneratedHaskellEditionImpact` | data | yes | `handOwnedUses` | `handOwnedUses` | `![GeneratedHaskellEditionUse]` | `(.handOwnedUses)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:222` | `PreparedGeneratedHaskellEditionMigration` | data | no | `impact` | `impact` | `!GeneratedHaskellEditionImpact` | `(.impact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:223` | `PreparedGeneratedHaskellEditionMigration` | data | no | `backups` | `backups` | `![(FilePath, FilePath)]` | `(.backups)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:224` | `PreparedGeneratedHaskellEditionMigration` | data | no | `reportPath` | `reportPath` | `!FilePath` | `(.reportPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:225` | `PreparedGeneratedHaskellEditionMigration` | data | no | `reportText` | `reportText` | `!Text` | `(.reportText)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:226` | `PreparedGeneratedHaskellEditionMigration` | data | no | `sourceMoves` | `sourceMoves` | `![SourceMove]` | `(.sourceMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:247` | `GeneratedArtifactImpact` | data | yes | `artifactCategory` | `category` | `!GeneratedArtifactCategory` | `(.category)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:248` | `GeneratedArtifactImpact` | data | yes | `artifactRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:249` | `GeneratedArtifactImpact` | data | yes | `artifactPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:250` | `GeneratedArtifactImpact` | data | yes | `artifactDisposition` | `disposition` | `!WriteDisposition` | `(.disposition)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:260` | `StaleModule` | data | yes | `staleKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:261` | `StaleModule` | data | yes | `stalePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:262` | `StaleModule` | data | yes | `staleGeneratedEvidence` | `generatedEvidence` | `!(Maybe StaleGeneratedEvidence)` | `(.generatedEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:267` | `MappingDrift` | data | yes | `driftSpecName` | `specName` | `!Text` | `(.specName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:268` | `MappingDrift` | data | yes | `driftPrevious` | `previous` | `!(Maybe MappingIdentity)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:269` | `MappingDrift` | data | yes | `driftCurrent` | `current` | `!(Maybe MappingIdentity)` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:274` | `SourceLanguageDrift` | data | yes | `languageDriftPrevious` | `previous` | `!SourceLanguage` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:275` | `SourceLanguageDrift` | data | yes | `languageDriftCurrent` | `current` | `!SourceLanguage` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:280` | `ScaffoldReport` | data | yes | `reportSpecPath` | `specPath` | `!FilePath` | `(.specPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:281` | `ScaffoldReport` | data | yes | `reportOutDir` | `outDir` | `!FilePath` | `(.outDir)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:282` | `ScaffoldReport` | data | yes | `reportContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:283` | `ScaffoldReport` | data | yes | `reportDispositions` | `dispositions` | `![(ScaffoldModule, WriteDisposition)]` | `(.dispositions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:284` | `ScaffoldReport` | data | yes | `reportInertNodes` | `inertNodes` | `![(Text, Text)]` | `(.inertNodes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:285` | `ScaffoldReport` | data | yes | `reportManifestPath` | `manifestPath` | `!FilePath` | `(.manifestPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:286` | `ScaffoldReport` | data | yes | `reportRecordPath` | `recordPath` | `!FilePath` | `(.recordPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:287` | `ScaffoldReport` | data | yes | `reportPreviousSpecPath` | `previousSpecPath` | `!(Maybe Text)` | `(.previousSpecPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:288` | `ScaffoldReport` | data | yes | `reportStale` | `stale` | `![StaleModule]` | `(.stale)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:289` | `ScaffoldReport` | data | yes | `reportConsumerPlan` | `consumerPlan` | `!ConsumerPlan` | `(.consumerPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:290` | `ScaffoldReport` | data | yes | `reportConstraintPlan` | `constraintPlan` | `![Text]` | `(.constraintPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:291` | `ScaffoldReport` | data | yes | `reportMappingDrift` | `mappingDrift` | `![MappingDrift]` | `(.mappingDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:292` | `ScaffoldReport` | data | yes | `reportQueryContractBaselineUnavailable` | `queryContractBaselineUnavailable` | `!Bool` | `(.queryContractBaselineUnavailable)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:293` | `ScaffoldReport` | data | yes | `reportQueryContractDrift` | `queryContractDrift` | `![QueryContractDrift]` | `(.queryContractDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:294` | `ScaffoldReport` | data | yes | `reportQueryContractMigrations` | `queryContractMigrations` | `![QueryContractMigration]` | `(.queryContractMigrations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:295` | `ScaffoldReport` | data | yes | `reportSemanticImpact` | `semanticImpact` | `!SemanticImpactReport` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:296` | `ScaffoldReport` | data | yes | `reportRouterSelectionDrift` | `routerSelectionDrift` | `![RouterSelectionDrift]` | `(.routerSelectionDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:297` | `ScaffoldReport` | data | yes | `processReactionCoordinationDrift` | `processReactionCoordinationDrift` | `![ProcessReactionDrift]` | `(.processReactionCoordinationDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:298` | `ScaffoldReport` | data | yes | `reportProjectionMappedImpact` | `projectionMappedImpact` | `!(Maybe ProjectionMappedImpact)` | `(.projectionMappedImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:299` | `ScaffoldReport` | data | yes | `reportGeneratedArtifactImpact` | `generatedArtifactImpact` | `![GeneratedArtifactImpact]` | `(.generatedArtifactImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:300` | `ScaffoldReport` | data | yes | `reportSourceLanguageDrift` | `sourceLanguageDrift` | `!(Maybe SourceLanguageDrift)` | `(.sourceLanguageDrift)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:301` | `ScaffoldReport` | data | yes | `reportNewHoles` | `newHoles` | `![BindingHole]` | `(.newHoles)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:302` | `ScaffoldReport` | data | yes | `processReactionRows` | `processReactionRows` | `![ProcessReactionRecordRow]` | `(.processReactionRows)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:303` | `ScaffoldReport` | data | yes | `reportAddedBehavior` | `addedBehavior` | `![BehaviorRecordRow]` | `(.addedBehavior)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:304` | `ScaffoldReport` | data | yes | `reportRemovedBehavior` | `removedBehavior` | `![BehaviorRecordRow]` | `(.removedBehavior)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:305` | `ScaffoldReport` | data | yes | `reportObsoleteOutputHooks` | `obsoleteOutputHooks` | `![(Text, Text)]` | `(.obsoleteOutputHooks)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:306` | `ScaffoldReport` | data | yes | `reportConformancePackage` | `conformancePackage` | `!(Maybe ConformancePackageReport)` | `(.conformancePackage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:307` | `ScaffoldReport` | data | yes | `reportNameMoves` | `nameMoves` | `![SourceMove]` | `(.nameMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:308` | `ScaffoldReport` | data | yes | `reportSidecarMoves` | `sidecarMoves` | `![SidecarMove]` | `(.sidecarMoves)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:313` | `QueryContractMigration` | data | yes | `qcmOwner` | `owner` | `!Text` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:314` | `QueryContractMigration` | data | yes | `path` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:315` | `QueryContractMigration` | data | yes | `qcmRequiredImport` | `requiredImport` | `!Text` | `(.requiredImport)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:63` | `EffectiveLanguageContract` | data | yes | `effectiveContractLanguageVersion` | `contractLanguageVersion` | `!LanguageVersion` | `(.contractLanguageVersion)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:64` | `EffectiveLanguageContract` | data | yes | `effectiveRuntimeProfile` | `runtimeProfile` | `!RuntimeSemanticsProfile` | `(.runtimeProfile)`, pattern, or construction | serialized/wire review risk | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:160` | `CheckedService` | data | no | `serviceLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk | `none` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:161` | `CheckedService` | data | no | `serviceSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk | `none` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:162` | `CheckedService` | data | no | `serviceTypeGraph` | `typeGraph` | `Either (NonEmpty TypeGraphError) TypeGraph` | `(.typeGraph)`, pattern, or construction | serialized/wire review risk | `none` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticContract.hs:163` | `CheckedService` | data | no | `serviceProjectionSupplies` | `projectionSupplies` | `ProjectionSupplyAnalysis` | `(.projectionSupplies)`, pattern, or construction | serialized/wire review risk | `none` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:100` | `MappedRoot` | data | yes | `mappedRootConsumer` | `consumer` | `!MappedConsumer` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:101` | `MappedRoot` | data | yes | `mappedRootKind` | `kind` | `!MappedRootKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:102` | `MappedRoot` | data | yes | `mappedRootUseSite` | `useSite` | `!UseSite` | `(.useSite)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:103` | `MappedRoot` | data | yes | `mappedRootDeclaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:111` | `MappedRootEvidence` | data | yes | `evidenceConsumer` | `consumer` | `!MappedConsumer` | `(.consumer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:112` | `MappedRootEvidence` | data | yes | `evidenceRootKind` | `rootKind` | `!MappedRootKind` | `(.rootKind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:113` | `MappedRootEvidence` | data | yes | `evidencePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:114` | `MappedRootEvidence` | data | yes | `evidenceOperation` | `operation` | `!(Maybe Text)` | `(.operation)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:141` | `SemanticImpact` | data | yes | `impactRoots` | `roots` | `![MappedRoot]` | `(.roots)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:142` | `SemanticImpact` | data | yes | `impactUsePaths` | `usePaths` | `!(Map MappedKey [UsePath])` | `(.usePaths)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:143` | `SemanticImpact` | data | yes | `impactAggregateDeclarations` | `aggregateDeclarations` | `!(Map MappedConsumer (Set MappedKey))` | `(.aggregateDeclarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:144` | `SemanticImpact` | data | yes | `impactDeclarationConsumers` | `declarationConsumers` | `!(Map MappedKey (Set MappedConsumer))` | `(.declarationConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:145` | `SemanticImpact` | data | yes | `impactDeclarationEvidence` | `declarationEvidence` | `!(Map MappedKey (Set MappedRootEvidence))` | `(.declarationEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:146` | `SemanticImpact` | data | yes | `impactDeclarationConsequences` | `declarationConsequences` | `!(Map MappedKey (Set MappedConsequence))` | `(.declarationConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:147` | `SemanticImpact` | data | yes | `impactServiceDeclarations` | `serviceDeclarations` | `!(Set MappedKey)` | `(.serviceDeclarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:148` | `SemanticImpact` | data | yes | `impactDeclarationIdentities` | `declarationIdentities` | `!(Map MappedKey Text)` | `(.declarationIdentities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:149` | `SemanticImpact` | data | yes | `impactUnsupportedProjectionSources` | `unsupportedProjectionSources` | `![UnsupportedProjectionSource]` | `(.unsupportedProjectionSources)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:159` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedConsumers` | `mappedConsumers` | `!(Map MappedKey (Set MappedConsumer))` | `(.mappedConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:160` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedEvidence` | `mappedEvidence` | `!(Maybe (Map MappedKey (Set MappedRootEvidence)))` | `(.mappedEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:161` | `SemanticImpactSnapshot` | data | yes | `snapshotMappedConsequences` | `mappedConsequences` | `!(Maybe (Map MappedKey (Set MappedConsequence)))` | `(.mappedConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:162` | `SemanticImpactSnapshot` | data | yes | `snapshotServiceInventory` | `serviceInventory` | `!(Set MappedKey)` | `(.serviceInventory)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:163` | `SemanticImpactSnapshot` | data | yes | `snapshotDeclarationIdentities` | `declarationIdentities` | `!(Map MappedKey Text)` | `(.declarationIdentities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:170` | `MappedImpactDelta` | data | yes | `impactDeclaration` | `declaration` | `!MappedKey` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:171` | `MappedImpactDelta` | data | yes | `impactPreviousConsumers` | `previousConsumers` | `!(Set MappedConsumer)` | `(.previousConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:172` | `MappedImpactDelta` | data | yes | `impactCurrentConsumers` | `currentConsumers` | `!(Set MappedConsumer)` | `(.currentConsumers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:173` | `MappedImpactDelta` | data | yes | `impactPreviousEvidence` | `previousEvidence` | `!(Maybe (Set MappedRootEvidence))` | `(.previousEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:174` | `MappedImpactDelta` | data | yes | `impactCurrentEvidence` | `currentEvidence` | `!(Maybe (Set MappedRootEvidence))` | `(.currentEvidence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:175` | `MappedImpactDelta` | data | yes | `impactPreviousConsequences` | `previousConsequences` | `!(Maybe (Set MappedConsequence))` | `(.previousConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:176` | `MappedImpactDelta` | data | yes | `impactCurrentConsequences` | `currentConsequences` | `!(Maybe (Set MappedConsequence))` | `(.currentConsequences)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:177` | `MappedImpactDelta` | data | yes | `impactServiceConformance` | `serviceConformance` | `!Bool` | `(.serviceConformance)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:185` | `SemanticImpactReport` | data | yes | `semanticReportPrevious` | `previous` | `!(Maybe SemanticImpactSnapshot)` | `(.previous)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:186` | `SemanticImpactReport` | data | yes | `semanticReportCurrent` | `current` | `!SemanticImpactSnapshot` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:187` | `SemanticImpactReport` | data | yes | `semanticReportDeclarations` | `declarations` | `![MappedKey]` | `(.declarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:188` | `SemanticImpactReport` | data | yes | `semanticReportDeltas` | `deltas` | `![MappedImpactDelta]` | `(.deltas)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:514` | `SelectionEvidence` | data | no | `selectionEvidenceRoot` | `root` | `!MappedRoot` | `(.root)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/SemanticImpact.hs:515` | `SelectionEvidence` | data | no | `selectionEvidencePath` | `path` | `!Text` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/ServiceHarness.hs:28` | `DuplicateServiceFactKey` | newtype | yes | `duplicateServiceFactKey` | `duplicateServiceFactKey` | `Text` | `(.duplicateServiceFactKey)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:48` | `SidecarMove` | data | yes | `sidecarOldPath` | `oldPath` | `!FilePath` | `(.oldPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:49` | `SidecarMove` | data | yes | `sidecarNewPath` | `newPath` | `!FilePath` | `(.newPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:50` | `SidecarMove` | data | yes | `sidecarBackupPath` | `backupPath` | `!(Maybe FilePath)` | `(.backupPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/SidecarMigration.hs:51` | `SidecarMove` | data | yes | `sidecarMoveDisposition` | `moveDisposition` | `!SidecarMoveDisposition` | `(.moveDisposition)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:22` | `SourcePoint` | data | yes | `offset` | `offset` | `!Int` | `(.offset)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:23` | `SourcePoint` | data | yes | `line` | `line` | `!Int` | `(.line)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:24` | `SourcePoint` | data | yes | `column` | `column` | `!Int` | `(.column)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:38` | `SourceSpan` | data | yes | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:39` | `SourceSpan` | data | yes | `start` | `start` | `!SourcePoint` | `(.start)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:40` | `SourceSpan` | data | yes | `end` | `end` | `!SourcePoint` | `(.end)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:61` | `Located` | data | yes | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Functor, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Source.hs:62` | `Located` | data | yes | `value` | `value` | `!a` | `(.value)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show, Functor, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:67` | `IndexedSourcePosition` | data | no | `quality` | `quality` | `!SourcePositionQuality` | `(.quality)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:68` | `IndexedSourcePosition` | data | no | `span` | `span` | `!SourceSpan` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:73` | `SemanticSourceIndex` | newtype | no | `positions` | `positions` | `Map SourceSubject IndexedSourcePosition` | `(.positions)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:79` | `ParsedSourceDocument` | data | yes | `documentParsedSource` | `parsedSource` | `!ParsedSource` | `(.parsedSource)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:80` | `ParsedSourceDocument` | data | yes | `documentSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:92` | `SourceIndexFailure` | data | yes | `failureCode` | `code` | `!SourceIndexFailureCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:93` | `SourceIndexFailure` | data | yes | `failureSubject` | `subject` | `!(Maybe SourceSubject)` | `(.subject)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:94` | `SourceIndexFailure` | data | yes | `failureSpan` | `span` | `!(Maybe SourceSpan)` | `(.span)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/SourceIndex.hs:95` | `SourceIndexFailure` | data | yes | `failureMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:82` | `ConformanceRendering` | data | no | `renderingContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:83` | `ConformanceRendering` | data | no | `renderingGraph` | `graph` | `!TypeGraph` | `(.graph)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:84` | `ConformanceRendering` | data | no | `renderingDeclarations` | `declarations` | `![ResolvedMappedDecl]` | `(.declarations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:85` | `ConformanceRendering` | data | no | `nominals` | `nominals` | `![NominalLeaf]` | `(.nominals)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:86` | `ConformanceRendering` | data | no | `renderingProjections` | `projections` | `![StructuralProjection]` | `(.projections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/StructuralConformance.hs:87` | `ConformanceRendering` | data | no | `renderingImportPlan` | `importPlan` | `!HaskellImportPlan` | `(.importPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:33` | `SurfaceSource` | data | yes | `source` | `source` | `!FilePath` | `(.source)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:34` | `SurfaceSource` | data | yes | `language` | `language` | `!SourceLanguage` | `(.language)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:35` | `SurfaceSource` | data | yes | `preamble` | `preamble` | `!(Maybe (Located SourceLanguage))` | `(.preamble)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:36` | `SurfaceSource` | data | yes | `spec` | `spec` | `!(Located SurfaceSpec)` | `(.spec)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:43` | `SurfaceSpec` | data | yes | `context` | `context` | `!(Located Text)` | `(.context)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:44` | `SurfaceSpec` | data | yes | `moduleRoot` | `moduleRoot` | `!(Maybe (Located Text))` | `(.moduleRoot)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:45` | `SurfaceSpec` | data | yes | `layout` | `layout` | `!(Maybe (Located Placement))` | `(.layout)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:46` | `SurfaceSpec` | data | yes | `items` | `items` | `![Located SurfaceTopItem]` | `(.items)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/Syntax.hs:47` | `SurfaceSpec` | data | yes | `elements` | `elements` | `![Located SurfaceElement]` | `(.elements)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:39` | `TransitionFamilyKey` | data | yes | `familyMode` | `mode` | `!TransitionMode` | `(.mode)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:40` | `TransitionFamilyKey` | data | yes | `familySource` | `source` | `!Name` | `(.source)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:41` | `TransitionFamilyKey` | data | yes | `familyCommand` | `command` | `!Name` | `(.command)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:53` | `TransitionFamilyDelta` | data | yes | `familyKey` | `familyKey` | `!TransitionFamilyKey` | `(.familyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:54` | `TransitionFamilyDelta` | data | yes | `oldRemainder` | `oldRemainder` | `![Transition]` | `(.oldRemainder)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:55` | `TransitionFamilyDelta` | data | yes | `newRemainder` | `newRemainder` | `![Transition]` | `(.newRemainder)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:61` | `ReplayBodyKey` | newtype | yes | `unReplayBodyKey` | `unReplayBodyKey` | `Text` | explicit `unReplayBodyKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:76` | `ReplayBodyDelta` | data | yes | `bodyFamilyKey` | `bodyFamilyKey` | `!TransitionFamilyKey` | `(.bodyFamilyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:77` | `ReplayBodyDelta` | data | yes | `bodyKey` | `bodyKey` | `!ReplayBodyKey` | `(.bodyKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:78` | `ReplayBodyDelta` | data | yes | `oldBodyMembers` | `oldBodyMembers` | `![Transition]` | `(.oldBodyMembers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:79` | `ReplayBodyDelta` | data | yes | `newBodyMembers` | `newBodyMembers` | `![Transition]` | `(.newBodyMembers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TransitionFamily.hs:80` | `ReplayBodyDelta` | data | yes | `bodyStatus` | `bodyStatus` | `!ReplayBodyStatus` | `(.bodyStatus)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:99` | `QualifiedValueName` | newtype | yes | `unQualifiedValueName` | `unQualifiedValueName` | `Text` | explicit `unQualifiedValueName` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:105` | `CanonicalTypeId` | newtype | yes | `unCanonicalTypeId` | `unCanonicalTypeId` | `Text` | explicit `unCanonicalTypeId` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:111` | `BindingVersion` | newtype | yes | `unBindingVersion` | `unBindingVersion` | `Text` | explicit `unBindingVersion` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:117` | `CodecIdentity` | newtype | yes | `unCodecIdentity` | `unCodecIdentity` | `Text` | explicit `unCodecIdentity` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:123` | `CodecVersion` | newtype | yes | `unCodecVersion` | `unCodecVersion` | `Text` | explicit `unCodecVersion` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:178` | `ConsumerNominalBinding` | data | yes | `haskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:179` | `ConsumerNominalBinding` | data | yes | `binding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:180` | `ConsumerNominalBinding` | data | yes | `bindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:181` | `ConsumerNominalBinding` | data | yes | `canonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:182` | `ConsumerNominalBinding` | data | yes | `fixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:183` | `ConsumerNominalBinding` | data | yes | `initial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:199` | `NominalLeaf` | data | yes | `name` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:200` | `NominalLeaf` | data | yes | `kind` | `kind` | `!NominalLeafKind` | `(.kind)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:201` | `NominalLeaf` | data | yes | `ownership` | `ownership` | `!NominalLeafOwnership` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:202` | `NominalLeaf` | data | yes | `loc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:216` | `NominalLeafError` | newtype | yes | `nominalLeafIssues` | `nominalLeafIssues` | `NonEmpty NominalLeafIssue` | `(.nominalLeafIssues)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:327` | `StructuralDecl` | data | yes | `sdName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:328` | `StructuralDecl` | data | yes | `sdHaskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:329` | `StructuralDecl` | data | yes | `sdBinding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:330` | `StructuralDecl` | data | yes | `sdBindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:331` | `StructuralDecl` | data | yes | `sdCanonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:332` | `StructuralDecl` | data | yes | `sdFixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:333` | `StructuralDecl` | data | yes | `sdInitial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:334` | `StructuralDecl` | data | yes | `sdLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:339` | `OpaqueDecl` | data | yes | `odName` | `name` | `!Name` | `(.name)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:340` | `OpaqueDecl` | data | yes | `odHaskell` | `haskell` | `!HaskellSource` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:341` | `OpaqueDecl` | data | yes | `odCodecIdentity` | `codecIdentity` | `!CodecIdentity` | `(.codecIdentity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:342` | `OpaqueDecl` | data | yes | `odCodecVersion` | `codecVersion` | `!CodecVersion` | `(.codecVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:343` | `OpaqueDecl` | data | yes | `odFixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:344` | `OpaqueDecl` | data | yes | `odInitial` | `initial` | `!(Maybe QualifiedValueName)` | `(.initial)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:345` | `OpaqueDecl` | data | yes | `odLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:422` | `MappedKey` | newtype | yes | `unMappedKey` | `unMappedKey` | `Name` | explicit `unMappedKey` positional function | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:447` | `ResolvedWireField` | data | yes | `rwfHaskell` | `haskell` | `!Name` | `(.haskell)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:448` | `ResolvedWireField` | data | yes | `rwfKey` | `key` | `!Text` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:449` | `ResolvedWireField` | data | yes | `rwfType` | `valueType` | `!ResolvedTypeExpr` | `(.valueType)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:450` | `ResolvedWireField` | data | yes | `rwfPresence` | `presence` | `!Presence` | `(.presence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:451` | `ResolvedWireField` | data | yes | `rwfOnMissing` | `onMissing` | `!(Maybe OnMissing)` | `(.onMissing)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:452` | `ResolvedWireField` | data | yes | `rwfLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:457` | `ResolvedWireArm` | data | yes | `rwaCtor` | `ctor` | `!Name` | `(.ctor)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:458` | `ResolvedWireArm` | data | yes | `rwaTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:459` | `ResolvedWireArm` | data | yes | `rwaPayload` | `payload` | `!(Maybe ResolvedTypeExpr)` | `(.payload)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:460` | `ResolvedWireArm` | data | yes | `rwaLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:497` | `UseSite` | data | yes | `root` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:498` | `UseSite` | data | yes | `mappedKey` | `mappedKey` | `!MappedKey` | `(.mappedKey)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:503` | `NominalRootSite` | data | yes | `root` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:504` | `NominalRootSite` | data | yes | `nominal` | `nominal` | `!Name` | `(.nominal)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:505` | `NominalRootSite` | data | yes | `segments` | `segments` | `![PathSeg]` | `(.segments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:521` | `UsePath` | data | yes | `upRoot` | `root` | `!RootRef` | `(.root)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:522` | `UsePath` | data | yes | `upSegments` | `segments` | `![PathSeg]` | `(.segments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:542` | `TypeGraph` | data | yes | `tgDeclarations` | `declarations` | `!(Map MappedKey ResolvedMappedDecl)` | `(.declarations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:543` | `TypeGraph` | data | yes | `tgReachability` | `reachability` | `!(Map MappedKey (Set MappedKey))` | `(.reachability)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:544` | `TypeGraph` | data | yes | `nominalLeaves` | `nominalLeaves` | `!(Map Name NominalLeaf)` | `(.nominalLeaves)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:545` | `TypeGraph` | data | yes | `unsupportedNominalLeafKinds` | `unsupportedNominalLeafKinds` | `!(Map Name Text)` | `(.unsupportedNominalLeafKinds)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:546` | `TypeGraph` | data | yes | `nominalReachability` | `nominalReachability` | `!(Map MappedKey (Set Name))` | `(.nominalReachability)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:547` | `TypeGraph` | data | yes | `tgUseSites` | `useSites` | `![UseSite]` | `(.useSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:548` | `TypeGraph` | data | yes | `nominalRootSites` | `nominalRootSites` | `![NominalRootSite]` | `(.nominalRootSites)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:549` | `TypeGraph` | data | yes | `tgRootSegments` | `rootSegments` | `!(Map UseSite [PathSeg])` | `(.rootSegments)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:550` | `TypeGraph` | data | yes | `tgDerivedMappedConsumers` | `derivedMappedConsumers` | `![DerivedMappedConsumer]` | `(.derivedMappedConsumers)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:551` | `TypeGraph` | data | yes | `tgReplayableProjectionGroups` | `replayableProjectionGroups` | `!(Map DerivedMappedConsumer Name)` | `(.replayableProjectionGroups)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:552` | `TypeGraph` | data | yes | `tgProjectionOperationalIdentities` | `projectionOperationalIdentities` | `!(Map DerivedMappedConsumer Text)` | `(.projectionOperationalIdentities)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:553` | `TypeGraph` | data | yes | `tgUnsupportedProjectionSources` | `unsupportedProjectionSources` | `![UnsupportedProjectionSource]` | `(.unsupportedProjectionSources)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1198` | `TypeExprAlgebra` | data | yes | `onText` | `onText` | `a` | `(.onText)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1199` | `TypeExprAlgebra` | data | yes | `onInt` | `onInt` | `a` | `(.onInt)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1200` | `TypeExprAlgebra` | data | yes | `onInteger` | `onInteger` | `a` | `(.onInteger)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1201` | `TypeExprAlgebra` | data | yes | `onBool` | `onBool` | `a` | `(.onBool)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1202` | `TypeExprAlgebra` | data | yes | `onNatural` | `onNatural` | `a` | `(.onNatural)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1203` | `TypeExprAlgebra` | data | yes | `onTime` | `onTime` | `a` | `(.onTime)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1204` | `TypeExprAlgebra` | data | yes | `onDay` | `onDay` | `a` | `(.onDay)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1205` | `TypeExprAlgebra` | data | yes | `onTextSet` | `onTextSet` | `a` | `(.onTextSet)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1206` | `TypeExprAlgebra` | data | yes | `onJson` | `onJson` | `a` | `(.onJson)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1207` | `TypeExprAlgebra` | data | yes | `onOptional` | `onOptional` | `a -> a` | `(.onOptional)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1208` | `TypeExprAlgebra` | data | yes | `onList` | `onList` | `a -> a` | `(.onList)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1209` | `TypeExprAlgebra` | data | yes | `onMap` | `onMap` | `a -> a` | `(.onMap)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1210` | `TypeExprAlgebra` | data | yes | `onKeyedMap` | `onKeyedMap` | `NominalLeaf -> a -> a` | `(.onKeyedMap)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1211` | `TypeExprAlgebra` | data | yes | `onRef` | `onRef` | `MappedKey -> a` | `(.onRef)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1212` | `TypeExprAlgebra` | data | yes | `onNominal` | `onNominal` | `NominalLeaf -> a` | `(.onNominal)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1234` | `MappedShapeAlgebra` | data | yes | `onRecord` | `onRecord` | `Name -> UnknownFields -> [ResolvedWireField] -> a` | `(.onRecord)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1235` | `MappedShapeAlgebra` | data | yes | `onEnum` | `onEnum` | `[WireEnum] -> a` | `(.onEnum)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1236` | `MappedShapeAlgebra` | data | yes | `onUnion` | `onUnion` | `UnionEncoding -> [ResolvedWireArm] -> a` | `(.onUnion)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1237` | `MappedShapeAlgebra` | data | yes | `onBare` | `onBare` | `ResolvedTypeExpr -> a` | `(.onBare)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1238` | `MappedShapeAlgebra` | data | yes | `onRefined` | `onRefined` | `RefinedWirePolicy -> a` | `(.onRefined)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1250` | `MappedDeclAlgebra` | data | yes | `onStructuralDecl` | `onStructuralDecl` | `StructuralDecl -> ResolvedMappedShape -> a` | `(.onStructuralDecl)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/TypeGraph.hs:1251` | `MappedDeclAlgebra` | data | yes | `onOpaqueDecl` | `onOpaqueDecl` | `OpaqueDecl -> a` | `(.onOpaqueDecl)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:769` | `Diagnostic` | data | yes | `line` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:770` | `Diagnostic` | data | yes | `severity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:771` | `Diagnostic` | data | yes | `code` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:772` | `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:773` | `Diagnostic` | data | yes | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1703` | `NullabilityFacts` | data | no | `nfTopNull` | `topNull` | `!Bool` | `(.topNull)`, pattern, or construction | rendered/canonical output | `none` |
+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1704` | `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)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:145` | `WorkspaceManifest` | data | yes | `wmfRuntimePackageLoc` | `runtimePackageLoc` | `!Loc` | `(.runtimePackageLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:147` | `WorkspaceManifest` | data | yes | `wmfModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:149` | `WorkspaceManifest` | data | yes | `wmfModuleRootLoc` | `moduleRootLoc` | `!Loc` | `(.moduleRootLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:151` | `WorkspaceManifest` | data | yes | `wmfLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:153` | `WorkspaceManifest` | data | yes | `wmfLayoutLoc` | `layoutLoc` | `!Loc` | `(.layoutLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:155` | `WorkspaceManifest` | data | yes | `wmfMembers` | `members` | `!(NonEmpty WorkspaceMemberRef)` | `(.members)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:162` | `WorkspaceMemberRef` | data | yes | `wmrPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:163` | `WorkspaceMemberRef` | data | yes | `wmrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:545` | `WorkspaceLocation` | data | yes | `wlFile` | `file` | `!WorkspaceFile` | `(.file)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:546` | `WorkspaceLocation` | data | yes | `wlLine` | `line` | `!Int` | `(.line)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:547` | `WorkspaceLocation` | data | yes | `wlRole` | `role` | `!Text` | `(.role)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:557` | `WorkspaceDiagnostic` | data | yes | `wdLocations` | `locations` | `!(NonEmpty WorkspaceLocation)` | `(.locations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:558` | `WorkspaceDiagnostic` | data | yes | `wdSeverity` | `severity` | `!Severity` | `(.severity)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:559` | `WorkspaceDiagnostic` | data | yes | `wdCode` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:560` | `WorkspaceDiagnostic` | data | yes | `wdSourceLanguageCause` | `sourceLanguageCause` | `!(Maybe SourceLanguageDiagnostic)` | `(.sourceLanguageCause)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:561` | `WorkspaceDiagnostic` | data | yes | `wdMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:628` | `LineMap` | newtype | yes | `lmRanges` | `lmRanges` | `[(Int, Int, FilePath)]` | `(.lmRanges)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:637` | `OwnershipIndex` | data | yes | `oiDeclarations` | `declarations` | `!(Map (Text, Name) (FilePath, Loc))` | `(.declarations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:638` | `OwnershipIndex` | data | yes | `oiNodes` | `nodes` | `!(Map (Text, Name) (FilePath, Loc))` | `(.nodes)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:653` | `WorkspaceMember` | data | yes | `wmPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:655` | `WorkspaceMember` | data | yes | `wmSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:657` | `WorkspaceMember` | data | yes | `wmSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:660` | `WorkspaceMember` | data | yes | `wmSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:662` | `WorkspaceMember` | data | yes | `wmLineBase` | `lineBase` | `!Int` | `(.lineBase)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:664` | `WorkspaceMember` | data | yes | `wmLineCount` | `lineCount` | `!Int` | `(.lineCount)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:680` | `WorkspaceSpec` | data | yes | `wsService` | `service` | `!Text` | `(.service)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:681` | `WorkspaceSpec` | data | yes | `wsManifestPath` | `manifestPath` | `!FilePath` | `(.manifestPath)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:684` | `WorkspaceSpec` | data | yes | `wsLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:686` | `WorkspaceSpec` | data | yes | `wsContext` | `context` | `!Name` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:687` | `WorkspaceSpec` | data | yes | `wsRuntimePackage` | `runtimePackage` | `!(Maybe RuntimePackageName)` | `(.runtimePackage)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:688` | `WorkspaceSpec` | data | yes | `wsModuleRoot` | `moduleRoot` | `!(Maybe Text)` | `(.moduleRoot)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:689` | `WorkspaceSpec` | data | yes | `wsLayout` | `layout` | `!(Maybe Placement)` | `(.layout)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:691` | `WorkspaceSpec` | data | yes | `wsMembers` | `members` | `![WorkspaceMember]` | `(.members)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:692` | `WorkspaceSpec` | data | yes | `wsMergedSpec` | `mergedSpec` | `!Spec` | `(.mergedSpec)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:694` | `WorkspaceSpec` | data | yes | `wsSourceIndex` | `sourceIndex` | `!SemanticSourceIndex` | `(.sourceIndex)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:695` | `WorkspaceSpec` | data | yes | `wsLineMap` | `lineMap` | `!LineMap` | `(.lineMap)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:696` | `WorkspaceSpec` | data | yes | `wsOwnership` | `ownership` | `!OwnershipIndex` | `(.ownership)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
+| `keiro-dsl/src/Keiro/Dsl/Workspace.hs:1311` | `ContentSource` | newtype | yes | `csRead` | `csRead` | `FilePath -> IO (Either Text Text)` | `(.csRead)`, pattern, or construction | rendered/canonical output | `none` |
 | `keiro-dsl/src/Keiro/Dsl/WorkspaceAdoption.hs:63` | `ClaimedFile` | data | yes | `cfPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
 | `keiro-dsl/src/Keiro/Dsl/WorkspaceAdoption.hs:64` | `ClaimedFile` | data | yes | `cfEvidence` | `evidence` | `!ClaimEvidence` | `(.evidence)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
 | `keiro-dsl/src/Keiro/Dsl/WorkspaceAdoption.hs:66` | `ClaimedFile` | data | yes | `cfSource` | `source` | `!(Maybe Text)` | `(.source)`, 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
@@ -137,6 +137,8 @@
     TBool -> pure AggregateBool
     TNatural -> pure AggregateNatural
     TTime -> pure AggregateTime
+    TDay -> unsupportedShape
+    TTextSet -> unsupportedShape
     TJson -> unsupportedShape
     TOptional {} -> unsupportedShape
     TList {} -> unsupportedShape
@@ -246,6 +248,8 @@
   TBool -> "Bool"
   TNatural -> "Natural"
   TTime -> "Time"
+  TDay -> "Day"
+  TTextSet -> "Set(Text)"
   TJson -> "Json"
   TOptional value -> "Optional(" <> typeExprCanonicalName value <> ")"
   TList value -> "List(" <> typeExprCanonicalName value <> ")"
@@ -301,12 +305,49 @@
     GeneratedNominal -> Set.empty
     ConsumerNominal binding -> Set.singleton ((.package) ((.haskell) binding))
   AggregateMapped key -> case Map.lookup key ((.mapped) symbols) of
-    Just declaration -> Set.singleton ((.package) (mappedHaskell declaration))
+    Just declaration ->
+      Set.insert
+        ((.package) (mappedHaskell declaration))
+        (if mappedUsesDay Set.empty declaration then Set.singleton "time" else Set.empty)
     Nothing -> Set.empty
   _ -> Set.empty
   where
     mappedHaskell (ResolvedStructural declaration _) = (.haskell) declaration
     mappedHaskell (ResolvedOpaque declaration) = (.haskell) declaration
+    mappedUsesDay visited = \case
+      ResolvedOpaque {} -> False
+      ResolvedStructural _ shape ->
+        foldMappedShape
+          MappedShapeAlgebra
+            { onRecord = \_ _ fields -> any (exprUsesDay visited . (.valueType)) fields,
+              onEnum = const False,
+              onUnion = \_ arms -> any (maybe False (exprUsesDay visited) . (.payload)) arms,
+              onBare = exprUsesDay visited,
+              onRefined = const False
+            }
+          shape
+    exprUsesDay visited =
+      foldTypeExpr
+        TypeExprAlgebra
+          { onText = False,
+            onInt = False,
+            onInteger = False,
+            onBool = False,
+            onNatural = False,
+            onTime = False,
+            onDay = True,
+            onTextSet = False,
+            onJson = False,
+            onOptional = id,
+            onList = id,
+            onMap = id,
+            onKeyedMap = \_ -> id,
+            onRef = \ref ->
+              if Set.member ref visited
+                then False
+                else maybe False (mappedUsesDay (Set.insert ref visited)) (Map.lookup ref ((.mapped) symbols)),
+            onNominal = const False
+          }
 
 aggregateSampleHaskell :: AggregateSymbols -> Text -> ResolvedAggregateType -> Text
 aggregateSampleHaskell symbols sampleName resolved = case resolved of
diff --git a/src/Keiro/Dsl/CanonicalEncoding.hs b/src/Keiro/Dsl/CanonicalEncoding.hs
--- a/src/Keiro/Dsl/CanonicalEncoding.hs
+++ b/src/Keiro/Dsl/CanonicalEncoding.hs
@@ -21,6 +21,8 @@
 import Data.Text (Text)
 import Data.Text qualified as T
 import Data.Text.Encoding qualified as Text
+import Keiro.Codec.CalendarDay (calendarDayCodecPolicyIdentity)
+import Keiro.Codec.TextSet (textSetCodecPolicyIdentity)
 import Keiro.Dsl.Grammar
 import Numeric (showHex)
 import Prettyprinter
@@ -69,6 +71,8 @@
       TBool -> scalar "bool"
       TNatural -> scalar "natural"
       TTime -> scalar "time"
+      TDay -> scalar ("calendar-day:" <> calendarDayCodecPolicyIdentity)
+      TTextSet -> scalar ("text-set:" <> textSetCodecPolicyIdentity)
       TJson -> scalar "json"
       TOptional value -> record "optional" [typeExpr value]
       TList value -> record "list-type" [typeExpr value]
diff --git a/src/Keiro/Dsl/ConsumerTypePlan.hs b/src/Keiro/Dsl/ConsumerTypePlan.hs
--- a/src/Keiro/Dsl/ConsumerTypePlan.hs
+++ b/src/Keiro/Dsl/ConsumerTypePlan.hs
@@ -72,6 +72,8 @@
       RBool -> atom "Bool" []
       RNatural -> atom "Natural" [ImportRequirement "base" "Numeric.Natural" "Natural"]
       RTime -> atom "UTCTime" [ImportRequirement "time" "Data.Time" "UTCTime"]
+      RDay -> atom "Day" [ImportRequirement "time" "Data.Time.Calendar" "Day"]
+      RTextSet -> textSetType
       RJson -> atom "Value" [ImportRequirement "aeson" "Data.Aeson" "Value"]
       ROptional value -> application "Maybe" [ImportRequirement "base" "Data.Maybe" "Maybe"] <$> plan value
       RList value -> listType <$> plan value
@@ -110,6 +112,13 @@
 
     listType value = replaceRenderedType ("[" <> value.rendered <> "]") AtomicType value.requirements value
 
+    textSetType =
+      atom
+        "Set Text"
+        [ ImportRequirement "containers" "Data.Set" "Set",
+          ImportRequirement "text" "Data.Text" "Text"
+        ]
+
     mapType value =
       replaceRenderedType
         ("Map Text " <> argument value)
@@ -184,6 +193,11 @@
       RBool -> pure (plainAtom "Bool")
       RNatural -> pure (plainAtom "Natural")
       RTime -> pure (plainAtom "UTCTime")
+      RDay -> pure (plainAtom "Day")
+      RTextSet -> do
+        setType <- plannedReference (reference "Data.Set" "Set")
+        textType <- plannedReference (reference "Data.Text" "Text")
+        pure (RenderedType (setType <> " " <> textType) ApplicationType Set.empty Set.empty Set.empty)
       RJson -> pure (plainAtom "Value")
       ROptional value -> application "Maybe" <$> render value
       RList value -> listType <$> render value
diff --git a/src/Keiro/Dsl/Coverage.hs b/src/Keiro/Dsl/Coverage.hs
--- a/src/Keiro/Dsl/Coverage.hs
+++ b/src/Keiro/Dsl/Coverage.hs
@@ -42,6 +42,7 @@
 import Data.Set qualified as Set
 import Data.Text (Text)
 import Data.Text qualified as T
+import Keiro.Codec.IdDomain (enforcedIdDomainVersion, v5OrV7IdDomainVersion)
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.SemanticContract (CheckedService, checkedSpec, checkedTypeGraph, legacyCheckedService)
 import Keiro.Dsl.SemanticImpact
@@ -479,8 +480,8 @@
           position = if SegMapKey `elem` (.segments) path then "key" else "value",
           nominal = (.name) leaf,
           kind = case (.kind) leaf of NominalIdLeaf {} -> "id"; NominalEnumLeaf {} -> "enum"; NominalScalarLeaf {} -> "scalar",
-          prefix = case (.kind) leaf of NominalIdLeaf value -> Just value; NominalEnumLeaf {} -> Nothing; NominalScalarLeaf {} -> Nothing,
-          domainVersion = case (.kind) leaf of NominalIdLeaf {} -> Just "keiro-dsl/id-domain/typeid-v7/1"; NominalEnumLeaf {} -> Nothing; NominalScalarLeaf {} -> Nothing,
+          prefix = case (.kind) leaf of NominalIdLeaf value _ -> Just value; NominalEnumLeaf {} -> Nothing; NominalScalarLeaf {} -> Nothing,
+          domainVersion = case (.kind) leaf of NominalIdLeaf _ TypeIdV7 -> Just enforcedIdDomainVersion; NominalIdLeaf _ TypeIdV5OrV7 -> Just v5OrV7IdDomainVersion; NominalEnumLeaf {} -> Nothing; NominalScalarLeaf {} -> Nothing,
           canonicalType = case (.ownership) leaf of GeneratedLeaf -> Nothing; ConsumerLeaf binding -> Just (unCanonicalTypeId ((.canonical) binding)),
           ownership = case (.ownership) leaf of GeneratedLeaf -> "generated"; ConsumerLeaf {} -> "consumer"
         }
@@ -605,7 +606,9 @@
           concat
             [ map (SegArm ((.ctor) arm) ((.tag) arm) :) (maybe [] (jsonPathsFromExpr graph visited) ((.payload) arm))
             | arm <- arms
-            ]
+            ],
+        onBare = jsonPathsFromExpr graph visited,
+        onRefined = const []
       }
 
 jsonPathsFromExpr :: TypeGraph -> Set.Set MappedKey -> ResolvedTypeExpr -> [[PathSeg]]
@@ -618,6 +621,8 @@
         onBool = [],
         onNatural = [],
         onTime = [],
+        onDay = [],
+        onTextSet = [],
         onJson = [[]],
         onOptional = map (SegOptional :),
         onList = map (SegElem :),
diff --git a/src/Keiro/Dsl/Diff.hs b/src/Keiro/Dsl/Diff.hs
--- a/src/Keiro/Dsl/Diff.hs
+++ b/src/Keiro/Dsl/Diff.hs
@@ -77,7 +77,7 @@
 import Keiro.Dsl.FoldFingerprint (FoldSurfaceError, aggregateFoldSurfaceForService)
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellName qualified as HaskellName
-import Keiro.Dsl.IdDomain (IdDomainContract (..), contractIdDomainContractFor, idDomainContractFor)
+import Keiro.Dsl.IdDomain (IdDomainContract (..), contractIdDomainContractFor, contractIdDomainContractForAdmission, idDomainContractForDeclaration)
 import Keiro.Dsl.LanguageVersion (ParsedSource (..), SourceLanguage (..), declaredLanguageVersionMaybe, languageVersionText, renderParseFailure, sourceFormText)
 import Keiro.Dsl.MappedDiff (MappedFinding (..), diffMapped, renderMappedSubject)
 import Keiro.Dsl.Parser (parseSource)
@@ -839,15 +839,15 @@
             : [nominalUseChange use IdDomainContractChanged detail | use <- nominalBoundaryUses oldSpec newSpec ((.name) newDeclaration)]
         | newDeclaration <- (.ids) newSpec,
           Just oldDeclaration <- [find ((== (.name) newDeclaration) . (.name)) ((.ids) oldSpec)],
-          let oldContract = idDomainContractFor (checkedLanguageContract oldService) ((.prefix) oldDeclaration),
-          let newContract = idDomainContractFor (checkedLanguageContract newService) ((.prefix) newDeclaration),
+          let oldContract = idDomainContractForDeclaration (checkedLanguageContract oldService) oldDeclaration,
+          let newContract = idDomainContractForDeclaration (checkedLanguageContract newService) newDeclaration,
           oldContract /= newContract,
           let detail =
                 "ID admission contract changed "
                   <> renderIdDomainContract oldContract
                   <> " -> "
                   <> renderIdDomainContract newContract
-                  <> "; public construction, command decoding, current JSON codecs, and literals use the new contract; historical event replay retains its legacy decoder; old snapshots miss and rebuild from readable events, while rebuilt state that still contains legacy-invalid text remains intentionally uncacheable until overwritten or explicitly migrated"
+                  <> renderIdDomainDirection oldContract newContract
         ]
     contractTypeIdDomainChanges =
       [ breaking
@@ -898,8 +898,22 @@
 contractFieldIdDomain :: Spec -> EffectiveLanguageContract -> ContractField -> Maybe IdDomainContract
 contractFieldIdDomain spec languageContract field = case (.valueType) field of
   CTypeId prefix -> contractIdDomainContractFor languageContract prefix
-  CDeclaredId name -> contractTypePrefix spec (CDeclaredId name) >>= contractIdDomainContractFor languageContract
+  CDeclaredId name -> do
+    declaration <- find ((== name) . (.name)) ((.ids) spec)
+    contractIdDomainContractForAdmission languageContract ((.admission) declaration) ((.prefix) declaration)
   _ -> Nothing
+
+renderIdDomainDirection :: Maybe IdDomainContract -> Maybe IdDomainContract -> Text
+renderIdDomainDirection (Just oldContract) (Just newContract) =
+  case (idDomainAdmission oldContract, idDomainAdmission newContract) of
+    (TypeIdV7, TypeIdV5OrV7) ->
+      "; admission widens: retained values remain readable, but new UUIDv5 writes are an old-reader/new-writer hazard until every old reader is retired"
+    (TypeIdV5OrV7, TypeIdV7) ->
+      "; admission narrows: retained UUIDv5 history may stop decoding, so the old reader must remain reachable until audited history proves the narrowing safe"
+    _ ->
+      "; public construction, command decoding, current JSON codecs, and literals use the new contract; audit retained history and rolling-reader compatibility before adoption"
+renderIdDomainDirection _ _ =
+  "; public construction, command decoding, current JSON codecs, and literals use the new contract; historical event replay retains its legacy decoder; old snapshots miss and rebuild from readable events, while rebuilt state that still contains legacy-invalid text remains intentionally uncacheable until overwritten or explicitly migrated"
 
 renderContractIdDomainChange :: Maybe Text -> ContractType -> Maybe IdDomainContract -> Maybe IdDomainContract -> Text
 renderContractIdDomainChange resolvedPrefix valueType oldContract newContract =
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
@@ -18,7 +18,7 @@
 
 import Data.Aeson (FromJSON (..), ToJSON (..), object, withObject, (.:), (.:?), (.=))
 import Data.Bifunctor (first)
-import Data.List (groupBy, sortOn)
+import Data.List (find, groupBy, sortOn)
 import Data.List.NonEmpty (NonEmpty)
 import Data.Map.Strict qualified as Map
 import Data.Set qualified as Set
@@ -26,7 +26,7 @@
 import Data.Text qualified as T
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellName qualified as HaskellName
-import Keiro.Dsl.IdDomain (idDomainContractFor, idDomainVersion)
+import Keiro.Dsl.IdDomain (idDomainContractForDeclaration, idDomainVersion)
 import Keiro.Dsl.NominalType
 import Keiro.Dsl.SemanticContract (CheckedService, checkedLanguageContract, checkedSpec, checkedTypeGraph, legacyCheckedService)
 import Keiro.Dsl.TypeGraph
@@ -218,7 +218,9 @@
         onUnion = \_ arms ->
           [ ((.ctor) arm, maybe "constructor case" renderExprType ((.payload) arm))
           | arm <- arms
-          ]
+          ],
+        onBare = \expression -> [("value", renderExprType expression)],
+        onRefined = const [("value", "ByteString")]
       }
 
 renderExprType :: ResolvedTypeExpr -> Text
@@ -231,6 +233,8 @@
         onBool = "Bool",
         onNatural = "Natural",
         onTime = "UTCTime",
+        onDay = "Day",
+        onTextSet = "Set Text",
         onJson = "Value",
         onOptional = \value -> "Maybe (" <> value <> ")",
         onList = \value -> "[" <> value <> "]",
@@ -312,7 +316,7 @@
         EnumRepresentation {} -> "nominal-enum"
         ScalarRepresentation {} -> "nominal-scalar"
       representation = case (.representation) nominal of
-        IdRepresentation prefix -> "(KindID " <> quoted prefix <> ")"
+        IdRepresentation prefix _ -> "(KindID " <> quoted prefix <> ")"
         EnumRepresentation {} -> nominalEnumRepresentationModule spec name <> "." <> name <> "Representation"
         ScalarRepresentation NominalText -> "Text"
         ScalarRepresentation NominalInt -> "Int"
@@ -322,7 +326,9 @@
       canonical = Just (unCanonicalTypeId ((.canonical) binding))
       equalityContract = nominalEqualityIdentityForService (checkedLanguageContract service) nominal
       idContract = case (.representation) nominal of
-        IdRepresentation prefix -> idDomainVersion <$> idDomainContractFor (checkedLanguageContract service) prefix
+        IdRepresentation {} -> do
+          declaration <- find ((== name) . (.name)) ((.ids) spec)
+          idDomainVersion <$> idDomainContractForDeclaration (checkedLanguageContract service) declaration
         _ -> Nothing
       bindingEntry = nominalObligation name binding category ((.binding) binding) BindingValue ("NominalBinding " <> consumerType <> " " <> representation) paths (Just (unBindingVersion ((.bindingVersion) binding))) canonical equalityContract idContract
       fixtureEntry = nominalObligation name binding category ((.fixtures) binding) FixtureValue ("NominalFixtureCases " <> consumerType) paths Nothing canonical Nothing Nothing
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
@@ -457,6 +457,8 @@
       RBool -> Right (AggregateBool, Nothing)
       RNatural -> Right (AggregateNatural, Nothing)
       RTime -> Right (AggregateTime, Nothing)
+      RDay -> unsupported "Day"
+      RTextSet -> unsupported "Set Text"
       RJson -> unsupported "Json"
       ROptional {} -> unsupported "Optional"
       RList {} -> unsupported "List"
diff --git a/src/Keiro/Dsl/FoldFingerprint.hs b/src/Keiro/Dsl/FoldFingerprint.hs
--- a/src/Keiro/Dsl/FoldFingerprint.hs
+++ b/src/Keiro/Dsl/FoldFingerprint.hs
@@ -17,6 +17,7 @@
 import Data.Set qualified as Set
 import Data.Text (Text)
 import Data.Text qualified as T
+import Keiro.Codec.IdDomain (v5OrV7IdDomainVersion)
 import Keiro.Dsl.AggregateType
 import Keiro.Dsl.CanonicalEncoding (canonicalExpr, foldFingerprint128)
 import Keiro.Dsl.EventOutput
@@ -103,10 +104,10 @@
         Just declaration <- [Map.lookup (MappedKey typeName) ((.declarations) graph)]
       ]
     nominalSegments registry =
-      [ nominalUseSegment useSite nominal binding
+      [ segment
       | (useSite, typeName) <- nominalUseNames aggregate,
         Just nominal <- [lookupNominalType typeName registry],
-        ConsumerNominal binding <- [(.ownership) nominal]
+        segment <- nominalUseSegments useSite nominal
       ]
     nestedNominalSegments graph =
       [ nestedNominalUseSegment path leaf
@@ -154,7 +155,7 @@
 
 nominalLeafRepresentationSegment :: NominalLeafKind -> Text
 nominalLeafRepresentationSegment = \case
-  NominalIdLeaf prefix -> "id:" <> prefix
+  NominalIdLeaf prefix admission -> idRepresentationSegment prefix admission
   NominalEnumLeaf constructors ->
     "enum:" <> T.intercalate "," [constructor <> "=" <> wire | (constructor, wire) <- NE.toList constructors]
   NominalScalarLeaf representation -> case representation of
@@ -247,9 +248,28 @@
       "initial=" <> maybe "(none)" unQualifiedValueName ((.initial) binding)
     ]
 
+-- Released generated IDs contributed no direct-use segment. Preserve that
+-- exact surface for implicit v7 while making the candidate wider domain visible
+-- on direct registers and event fields. Consumer-owned nominal segments already
+-- existed and now carry the selected domain through their representation.
+nominalUseSegments :: Text -> ResolvedNominalType -> [Text]
+nominalUseSegments useSite nominal = case (.ownership) nominal of
+  ConsumerNominal binding -> [nominalUseSegment useSite nominal binding]
+  GeneratedNominal -> case (.representation) nominal of
+    IdRepresentation _ TypeIdV5OrV7 ->
+      [ T.intercalate
+          "|"
+          [ "nominal-use:" <> useSite,
+            "name=" <> (.name) nominal,
+            "representation=" <> nominalRepresentationSegment ((.representation) nominal),
+            "owner=generated"
+          ]
+      ]
+    _ -> []
+
 nominalRepresentationSegment :: NominalRepresentation -> Text
 nominalRepresentationSegment representation = case representation of
-  IdRepresentation prefix -> "id:" <> prefix
+  IdRepresentation prefix admission -> idRepresentationSegment prefix admission
   EnumRepresentation constructors -> "enum:" <> T.intercalate "," [constructor <> "=" <> wire | (constructor, wire) <- NE.toList constructors]
   ScalarRepresentation scalar -> case scalar of
     NominalText -> "Text"
@@ -257,6 +277,10 @@
     NominalNatural -> "Natural"
     NominalBool -> "Bool"
     NominalTime -> "Time"
+
+idRepresentationSegment :: Text -> IdAdmission -> Text
+idRepresentationSegment prefix TypeIdV7 = "id:" <> prefix
+idRepresentationSegment prefix TypeIdV5OrV7 = "id:" <> prefix <> ";domain=" <> v5OrV7IdDomainVersion
 
 mappedRegisterSegment :: TypeGraph -> ResolvedMappedDecl -> Text
 mappedRegisterSegment graph (ResolvedStructural declaration _) =
diff --git a/src/Keiro/Dsl/Frontend/Internal.hs b/src/Keiro/Dsl/Frontend/Internal.hs
--- a/src/Keiro/Dsl/Frontend/Internal.hs
+++ b/src/Keiro/Dsl/Frontend/Internal.hs
@@ -259,7 +259,7 @@
 spanLoc sourceSpan = Loc (startLine sourceSpan)
 
 setIdLoc :: Loc -> IdDecl -> IdDecl
-setIdLoc loc IdDecl {name, prefix, binding} = IdDecl {name, prefix, binding, loc}
+setIdLoc loc IdDecl {name, prefix, admission, binding} = IdDecl {name, prefix, admission, binding, loc}
 
 setEnumLoc :: Loc -> EnumDecl -> EnumDecl
 setEnumLoc loc EnumDecl {name, ctors, binding} = EnumDecl {name, ctors, binding, loc}
@@ -274,6 +274,8 @@
 setMappedLoc :: Loc -> MappedDecl -> MappedDecl
 setMappedLoc loc (MappedStructural name haskell binding bindingVersion canonical fixtures initial shape _) =
   MappedStructural name haskell binding bindingVersion canonical fixtures initial shape loc
+setMappedLoc loc (MappedRefined name haskell binding bindingVersion canonical fixtures initial policy _) =
+  MappedRefined name haskell binding bindingVersion canonical fixtures initial policy loc
 setMappedLoc loc (MappedOpaque name haskell codecId codecVersion fixtures initial _) =
   MappedOpaque name haskell codecId codecVersion fixtures initial loc
 
diff --git a/src/Keiro/Dsl/Goldens.hs b/src/Keiro/Dsl/Goldens.hs
--- a/src/Keiro/Dsl/Goldens.hs
+++ b/src/Keiro/Dsl/Goldens.hs
@@ -167,7 +167,7 @@
 sampleValue graph spec _aggregate resolvedType =
   case resolvedType of
     AggregateNominal nominal -> case (.representation) nominal of
-      IdRepresentation prefix -> String (prefix <> "_01hzy3v7q2e8kaw2m5x0d41n9c")
+      IdRepresentation prefix _ -> String (prefix <> "_01hzy3v7q2e8kaw2m5x0d41n9c")
       EnumRepresentation constructors -> String (snd (NE.head constructors))
       ScalarRepresentation NominalText -> String "sample"
       ScalarRepresentation NominalInt -> Number 1
@@ -226,7 +226,9 @@
                 <> [ (Key.fromText ((.contentsField) encoding), sampleMappedExpression graph payload)
                    | payload <- maybeToList ((.payload) firstArm)
                    ]
-          [] -> emptyObject
+          [] -> emptyObject,
+        onBare = sampleMappedExpression graph,
+        onRefined = const (String "00af")
       }
   where
     includeField field = case (.presence) field of
@@ -243,6 +245,8 @@
         onBool = Bool True,
         onNatural = Number 1,
         onTime = String "2026-01-01T00:00:00Z",
+        onDay = String "2000-02-29",
+        onTextSet = Array (pure (String "sample")),
         onJson = emptyObject,
         onOptional = id,
         onList = \value -> Array (pure value),
@@ -254,7 +258,7 @@
 
 sampleNominalLeaf :: NominalLeaf -> Value
 sampleNominalLeaf leaf = case (.kind) leaf of
-  NominalIdLeaf prefix -> String (prefix <> "_01h455vb4pex5vsknk084sn02q")
+  NominalIdLeaf prefix _ -> String (prefix <> "_01h455vb4pex5vsknk084sn02q")
   NominalEnumLeaf constructors -> String (snd (NE.head constructors))
   NominalScalarLeaf NominalText -> String "sample"
   NominalScalarLeaf NominalInt -> Number 1
diff --git a/src/Keiro/Dsl/Grammar.hs b/src/Keiro/Dsl/Grammar.hs
--- a/src/Keiro/Dsl/Grammar.hs
+++ b/src/Keiro/Dsl/Grammar.hs
@@ -11,6 +11,7 @@
     noLoc,
 
     -- * Shared declarations
+    IdAdmission (..),
     IdDecl (..),
     EnumDecl (..),
     RuleDecl (..),
@@ -25,6 +26,7 @@
     UnionEncoding (..),
     WireEnum (..),
     WireArm (..),
+    RefinedWirePolicy (..),
     MappedShape (..),
     HaskellSource (..),
     NominalBindingDecl (..),
@@ -189,6 +191,7 @@
 import Data.Text (Text)
 import Data.Text qualified as T
 import GHC.Generics (Generic)
+import Keiro.Codec.IdDomain (IdAdmission (..))
 import Numeric.Natural (Natural)
 
 -- | An identifier in the notation: a type name, register name, command/event
@@ -214,10 +217,12 @@
 noLoc = Loc 0
 
 -- | @id TransferReservationId prefix=rsv@ — declares an id newtype over 'Text'
--- and its prefix tag.
+-- and its prefix tag. Candidate syntax may explicitly widen admission to
+-- @domain=typeid-v5-or-v7@ without changing generation policy.
 data IdDecl = IdDecl
   { name :: !Name,
     prefix :: !Text,
+    admission :: !IdAdmission,
     binding :: !(Maybe NominalBindingDecl),
     loc :: !Loc
   }
@@ -257,6 +262,8 @@
   | TBool
   | TNatural
   | TTime
+  | TDay
+  | TTextSet
   | TJson
   | TOptional !TypeExpr
   | TList !TypeExpr
@@ -316,10 +323,18 @@
   }
   deriving stock (Eq, Show, Generic)
 
+-- | Keiro-owned admission and canonicalization policies available to an
+-- explicit refined declaration. Each constructor is a frozen wire contract.
+data RefinedWirePolicy
+  = Base16BytesV1
+  deriving stock (Eq, Ord, Show, Generic)
+
 data MappedShape
   = ShapeRecord !Name !UnknownFields ![WireField]
   | ShapeEnum ![WireEnum]
   | ShapeUnion !UnionEncoding ![WireArm]
+  | ShapeBare !TypeExpr
+  | ShapeRefined !RefinedWirePolicy
   deriving stock (Eq, Show, Generic)
 
 data HaskellSource = HaskellSource
@@ -367,6 +382,17 @@
         msInitial :: !(Maybe Text),
         msShape :: !MappedShape,
         msLoc :: !Loc
+      }
+  | MappedRefined
+      { mrName :: !Name,
+        mrHaskell :: !(Maybe HaskellSource),
+        mrBinding :: !(Maybe Text),
+        mrBindingVersion :: !(Maybe Text),
+        mrCanonical :: !(Maybe Text),
+        mrFixtures :: !(Maybe Text),
+        mrInitial :: !(Maybe Text),
+        mrPolicy :: !RefinedWirePolicy,
+        mrLoc :: !Loc
       }
   | MappedOpaque
       { moName :: !Name,
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
@@ -56,7 +56,7 @@
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellImport
 import Keiro.Dsl.HaskellName qualified as HaskellName
-import Keiro.Dsl.IdDomain (idDomainContractFor, idDomainSampleText)
+import Keiro.Dsl.IdDomain (idDomainContractFor, idDomainContractForAdmission, idDomainSampleText)
 import Keiro.Dsl.NominalType
 import Keiro.Dsl.PrettyPrint (renderExpr)
 import Keiro.Dsl.ProcessReaction (CheckedProcessReaction (..), checkProcessReaction, processReactionFingerprintFrom)
@@ -1035,11 +1035,11 @@
     generatedIds =
       [ nominal
       | nominal <- generatedNominalHarnessTypes aggregate,
-        IdRepresentation prefix <- [(.representation) nominal],
+        IdRepresentation prefix _ <- [(.representation) nominal],
         idDomainContractFor ((.languageContract) aggregate) prefix /= Nothing
       ]
     generatedIdDeclaration nominal = case (.representation) nominal of
-      IdRepresentation prefix -> case idDomainContractFor ((.languageContract) aggregate) prefix of
+      IdRepresentation prefix admission -> case idDomainContractForAdmission ((.languageContract) aggregate) admission prefix of
         Just contract ->
           let typeName = (.name) nominal
               constantName = generatedIdSampleName nominal
@@ -1218,12 +1218,22 @@
       ]
         <> ( if null enforcedIds
                then []
-               else ["import Data.KindID qualified as KindID", "import Data.Text qualified as T", "import Keiro.Codec.IdDomain (typeIdV7Domain, validateIdDomainText)"]
+               else
+                 [ "import Data.KindID qualified as KindID",
+                   "import Data.Text qualified as T",
+                   "import Keiro.Codec.IdDomain (" <> T.intercalate ", " (idDomainConstructors <> ["validateIdDomainText"]) <> ")"
+                 ]
            )
         <> ["import " <> nominalProjectionModule ((.context) aggregate) <> " qualified as NominalProjections" | not (null (nominalScalarHarnessTypes aggregate)) || not (null enforcedIds)]
   where
     nominals = consumerNominalHarnessTypes aggregate
     enforcedIds = enforcedConsumerNominalIdHarnessTypes aggregate
+    idDomainConstructors =
+      ["typeIdV7Domain" | any (hasAdmission TypeIdV7) enforcedIds]
+        <> ["typeIdV5OrV7Domain" | any (hasAdmission TypeIdV5OrV7) enforcedIds]
+    hasAdmission admission nominal = case (.representation) nominal of
+      IdRepresentation _ selected -> selected == admission
+      _ -> False
 
 hasNominalHarness :: Agg -> Bool
 hasNominalHarness = not . null . consumerNominalHarnessTypes
@@ -1253,7 +1263,7 @@
 enforcedConsumerNominalIdHarnessTypes aggregate =
   [ nominal
   | nominal <- consumerNominalHarnessTypes aggregate,
-    IdRepresentation prefix <- [(.representation) nominal],
+    IdRepresentation prefix _ <- [(.representation) nominal],
     idDomainContractFor ((.languageContract) aggregate) prefix /= Nothing
   ]
 
@@ -1296,8 +1306,8 @@
           fixtureName = renderHarnessReference aggregate (harnessQualifiedValueReference ((.fixtures) binding))
           fixtures = "(NonEmpty.toList (nominalFixtureCases " <> fixtureName <> "))"
     idDomainAssertions name bindingName fixtures nominal = case (.representation) nominal of
-      IdRepresentation prefix
-        | Just contract <- idDomainContractFor ((.languageContract) aggregate) prefix ->
+      IdRepresentation prefix admission
+        | Just contract <- idDomainContractForAdmission ((.languageContract) aggregate) admission prefix ->
             let firstSample = idDomainSampleText contract
                 samples = [firstSample, T.dropEnd 1 firstSample <> "r"]
                 wrongPrefix = "wrong_" <> T.drop (T.length prefix + 1) firstSample
@@ -1310,8 +1320,8 @@
                       <> fixtures
                   ),
                   ( "nominal ID fixture domain agreement: " <> name,
-                    "all (\\fixture -> case validateIdDomainText (typeIdV7Domain "
-                      <> tshow prefix
+                    "all (\\fixture -> case validateIdDomainText ("
+                      <> idDomainExpression admission prefix
                       <> ") (KindID.toText (nominalToRepresentation "
                       <> bindingName
                       <> " (nominalFixtureDomain fixture))) of Right () -> True; Left _ -> False) "
@@ -1325,12 +1335,12 @@
                       <> "]"
                   ),
                   ( "nominal ID boundary rejects wrong-prefix and normalized text: " <> name,
-                    "case (validateIdDomainText (typeIdV7Domain "
-                      <> tshow prefix
+                    "case (validateIdDomainText ("
+                      <> idDomainExpression admission prefix
                       <> ") "
                       <> tshow wrongPrefix
-                      <> ", validateIdDomainText (typeIdV7Domain "
-                      <> tshow prefix
+                      <> ", validateIdDomainText ("
+                      <> idDomainExpression admission prefix
                       <> ") (T.toUpper "
                       <> tshow firstSample
                       <> ")) of (Left _, Left _) -> True; _ -> False"
@@ -1344,6 +1354,8 @@
             <> " "
             <> tshow value
             <> " of Right parsed -> parsed; Left _ -> error \"generated canonical ID conformance probe failed to parse\")"
+        idDomainExpression TypeIdV7 prefix = "typeIdV7Domain " <> tshow prefix
+        idDomainExpression TypeIdV5OrV7 prefix = "typeIdV5OrV7Domain " <> tshow prefix
     renderList values =
       [ (if index == (0 :: Int) then "  [ " else "  , ") <> "(" <> tshow labelText <> ", " <> expression <> ")"
       | (index, (labelText, expression)) <- zip [0 ..] values
@@ -1364,15 +1376,16 @@
     declarations = mappedHarnessDeclarationsResolved aggregate
     structuralWire = [(declaration, shape) | ResolvedStructural declaration shape <- codecMappedDeclarations aggregate]
     eitherImports =
-      ["isLeft" | wirePoliciesUseIsLeft structuralWire]
-        <> ["isRight" | wirePoliciesUseIsRight structuralWire]
+      ["isLeft" | wirePoliciesUseIsLeft ((.typeGraph) aggregate) structuralWire]
+        <> ["isRight" | wirePoliciesUseIsRight ((.typeGraph) aggregate) structuralWire]
     renderImport moduleName names = "import " <> moduleName <> " (" <> T.intercalate ", " names <> ")"
 
 mappedCodecHarnessExports :: Agg -> Text
 mappedCodecHarnessExports aggregate =
   T.concat
     [ ", encode" <> (.name) declaration <> "Mapped, decode" <> (.name) declaration <> "Mapped"
-    | ResolvedStructural declaration _ <- codecMappedDeclarations aggregate
+    | ResolvedStructural declaration shape <- codecMappedDeclarations aggregate,
+      case shape of RBare {} -> False; RRefined {} -> False; _ -> True
     ]
 
 fixtureSample :: Agg -> QualifiedValueName -> Text
@@ -1559,26 +1572,39 @@
   RUnion encoding arms ->
     map (unionArmAssertion aggregate declaration encoding) arms
       <> [unknownFieldAssertion aggregate declaration ((.unknownFields) encoding)]
+  RBare {} -> []
+  RRefined {} -> []
 
-wirePoliciesUseIsLeft :: [(StructuralDecl, ResolvedMappedShape)] -> Bool
-wirePoliciesUseIsLeft = any $ \(_, shape) -> case shape of
+wirePoliciesUseIsLeft :: Maybe TypeGraph -> [(StructuralDecl, ResolvedMappedShape)] -> Bool
+wirePoliciesUseIsLeft graph = any $ \(_, shape) -> case shape of
   RRecord _ unknownFields fields ->
     unknownFields == RejectUnknown
-      || any (\field -> (.presence) field == POptional && not (isOptionalType ((.valueType) field))) fields
+      || any (\field -> (.presence) field == POptional && not (isOptionalType graph ((.valueType) field))) fields
   REnum {} -> True
   RUnion encoding _ -> (.unknownFields) encoding == RejectUnknown
+  RBare {} -> False
+  RRefined {} -> False
 
-wirePoliciesUseIsRight :: [(StructuralDecl, ResolvedMappedShape)] -> Bool
-wirePoliciesUseIsRight = any $ \(_, shape) -> case shape of
+wirePoliciesUseIsRight :: Maybe TypeGraph -> [(StructuralDecl, ResolvedMappedShape)] -> Bool
+wirePoliciesUseIsRight graph = any $ \(_, shape) -> case shape of
   RRecord _ unknownFields fields ->
     unknownFields == IgnoreUnknown
-      || any (\field -> (.presence) field == POptional && isOptionalType ((.valueType) field)) fields
+      || any (\field -> (.presence) field == POptional && isOptionalType graph ((.valueType) field)) fields
   REnum {} -> False
   RUnion encoding _ -> (.unknownFields) encoding == IgnoreUnknown
+  RBare {} -> False
+  RRefined {} -> False
 
-isOptionalType :: ResolvedTypeExpr -> Bool
-isOptionalType ROptional {} = True
-isOptionalType _ = False
+isOptionalType :: Maybe TypeGraph -> ResolvedTypeExpr -> Bool
+isOptionalType graph = go Set.empty
+  where
+    go _ ROptional {} = True
+    go seen (RRef key)
+      | key `Set.member` seen = False
+      | otherwise = case graph >>= \resolved -> Map.lookup key ((.declarations) resolved) of
+          Just (ResolvedStructural _ (RBare expression)) -> go (Set.insert key seen) expression
+          _ -> False
+    go _ _ = False
 
 recordMissingAssertions :: Agg -> StructuralDecl -> ResolvedWireField -> [Text]
 recordMissingAssertions aggregate declaration field =
@@ -1619,9 +1645,10 @@
     decoder = "decode" <> (.name) declaration <> "Mapped"
     fixtures = renderHarnessReference aggregate (harnessQualifiedValueReference ((.fixtures) declaration))
     encodedSample = encoder <> " (snd (NonEmpty.head (fixtureCases " <> fixtures <> ")))"
-    nullExpectation = case (.valueType) field of
-      ROptional _ -> "isRight"
-      _ -> "isLeft"
+    nullExpectation =
+      if isOptionalType ((.typeGraph) aggregate) ((.valueType) field)
+        then "isRight"
+        else "isLeft"
 
 missingExpectedValue :: Agg -> ResolvedWireField -> Text
 missingExpectedValue aggregate field = case (.onMissing) field of
diff --git a/src/Keiro/Dsl/IdDomain.hs b/src/Keiro/Dsl/IdDomain.hs
--- a/src/Keiro/Dsl/IdDomain.hs
+++ b/src/Keiro/Dsl/IdDomain.hs
@@ -1,11 +1,18 @@
 -- | Semantic selection of the published ID runtime contract.
 module Keiro.Dsl.IdDomain
-  ( IdNormalization (..),
+  ( IdAdmission (..),
+    IdNormalization (..),
     IdDomainContract (..),
     IdDomainFailure (..),
     enforcedIdDomainVersion,
+    v5OrV7IdDomainVersion,
+    typeIdV7Domain,
+    typeIdV5OrV7Domain,
     idDomainContractFor,
+    idDomainContractForAdmission,
+    idDomainContractForDeclaration,
     contractIdDomainContractFor,
+    contractIdDomainContractForAdmission,
     idDomainIdentity,
     idDomainIdentitiesForService,
     idDomainAcceptsText,
@@ -25,13 +32,24 @@
 
 -- | Versions 1 and 2 intentionally return 'Nothing': their generated IDs
 -- admitted arbitrary text. Runtime-semantics generation 2 is the first
--- enforcing contract.
+-- enforcing contract. The candidate explicit-domain capability lets a
+-- declaration select the wider frozen v5-or-v7 policy.
 idDomainContractFor :: EffectiveLanguageContract -> Text -> Maybe IdDomainContract
 idDomainContractFor languageContract prefix
   | runtimeProfileHasCapability ((.runtimeProfile) languageContract) GeneratedIdDomainTypeIdV7 =
       Just (typeIdV7Domain prefix)
   | otherwise = Nothing
 
+idDomainContractForAdmission :: EffectiveLanguageContract -> IdAdmission -> Text -> Maybe IdDomainContract
+idDomainContractForAdmission languageContract admission prefix
+  | runtimeProfileHasCapability ((.runtimeProfile) languageContract) GeneratedIdDomainTypeIdV7 =
+      Just (contractForAdmission admission prefix)
+  | otherwise = Nothing
+
+idDomainContractForDeclaration :: EffectiveLanguageContract -> IdDecl -> Maybe IdDomainContract
+idDomainContractForDeclaration languageContract declaration =
+  idDomainContractForAdmission languageContract ((.admission) declaration) ((.prefix) declaration)
+
 -- | Public contract DTOs adopt the frozen TypeID-v7 admission contract only
 -- in runtime semantics 3. Aggregate IDs retain the independent selector above.
 contractIdDomainContractFor :: EffectiveLanguageContract -> Text -> Maybe IdDomainContract
@@ -39,6 +57,15 @@
   | runtimeProfileHasCapability ((.runtimeProfile) languageContract) ContractIdDomainTypeIdV7 = Just (typeIdV7Domain prefix)
   | otherwise = Nothing
 
+contractIdDomainContractForAdmission :: EffectiveLanguageContract -> IdAdmission -> Text -> Maybe IdDomainContract
+contractIdDomainContractForAdmission languageContract admission prefix
+  | runtimeProfileHasCapability ((.runtimeProfile) languageContract) ContractIdDomainTypeIdV7 = Just (contractForAdmission admission prefix)
+  | otherwise = Nothing
+
+contractForAdmission :: IdAdmission -> Text -> IdDomainContract
+contractForAdmission TypeIdV7 = typeIdV7Domain
+contractForAdmission TypeIdV5OrV7 = typeIdV5OrV7Domain
+
 -- | Durable identity for the runtime admission domain of one declaration.
 -- This is deliberately separate from nominal equality: IDs without equality
 -- expressions still have a construction and codec contract.
@@ -63,17 +90,17 @@
     aggregateIdentities =
       [ idDomainIdentity ((.name) declaration) contract
       | declaration <- (.ids) spec,
-        Just contract <- [idDomainContractFor languageContract ((.prefix) declaration)]
+        Just contract <- [idDomainContractForDeclaration languageContract declaration]
       ]
     contractIdentities =
       [ idDomainIdentity ("contract:" <> (.name) contractNode <> "." <> (.name) event <> "." <> (.name) field) contract
       | NContract contractNode <- (.nodes) spec,
         event <- (.events) contractNode,
         field <- (.fields) event,
-        Just prefix <- [contractFieldPrefix field],
-        Just contract <- [contractIdDomainContractFor languageContract prefix]
+        Just (admission, prefix) <- [contractFieldAdmission field],
+        Just contract <- [contractIdDomainContractForAdmission languageContract admission prefix]
       ]
-    contractFieldPrefix field = case (.valueType) field of
-      CTypeId prefix -> Just prefix
-      CDeclaredId name -> (.prefix) <$> find ((== name) . (.name)) ((.ids) spec)
+    contractFieldAdmission field = case (.valueType) field of
+      CTypeId prefix -> Just (TypeIdV7, prefix)
+      CDeclaredId name -> (\declaration -> ((.admission) declaration, (.prefix) declaration)) <$> find ((== name) . (.name)) ((.ids) spec)
       _ -> Nothing
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
@@ -143,6 +143,11 @@
   | SeparatedProjectionQueryPolicy
   | DelegatedInboxRuntime
   | StructuralNominalLeaves
+  | BareStructuralMappings
+  | CalendarDayMappings
+  | TextSetMappings
+  | RefinedBase16Mappings
+  | ExplicitIdAdmissionDomains
   deriving stock (Eq, Ord, Show, Enum, Bounded)
 
 -- | An immutable, explicitly named set of runtime capabilities.  The
@@ -175,6 +180,17 @@
 capabilityFoldSegment DelegatedInboxRuntime = Nothing
 -- Structural nominal leaves change generated codecs, not transition/fold semantics.
 capabilityFoldSegment StructuralNominalLeaves = Nothing
+-- Bare structural mappings change generated codecs, not transition/fold semantics.
+capabilityFoldSegment BareStructuralMappings = Nothing
+-- Calendar-day mappings change generated codecs, not transition/fold semantics.
+capabilityFoldSegment CalendarDayMappings = Nothing
+-- Text-set mappings change generated codecs, not transition/fold semantics.
+capabilityFoldSegment TextSetMappings = Nothing
+-- Refined base16 mappings change generated codecs, not transition/fold semantics.
+capabilityFoldSegment RefinedBase16Mappings = Nothing
+-- Admission identity is declaration-scoped so unrelated candidate services
+-- retain their existing fold fingerprints.
+capabilityFoldSegment ExplicitIdAdmissionDomains = Nothing
 
 runtimeProfileFoldSegments :: RuntimeSemanticsProfile -> [Text]
 runtimeProfileFoldSegments RuntimeSemanticsProfile {capabilities} =
@@ -303,7 +319,7 @@
 profileV5 =
   SyntaxProfile
     "keiro-dsl/syntax-profile/5"
-    (Set.insert WorkqueueFifoHeadsSyntax (Set.insert KeyedMapSyntax (Set.insert ContractDeclaredIdSyntax (Set.insert ProcessReactionSyntax (Set.insert DelegatedInboxSyntax ((.features) profileV4))))))
+    (Set.insert ExplicitIdAdmissionDomainSyntax (Set.insert RefinedBase16Syntax (Set.insert TextSetSyntax (Set.insert CalendarDaySyntax (Set.insert BareStructuralMappingSyntax (Set.insert WorkqueueFifoHeadsSyntax (Set.insert KeyedMapSyntax (Set.insert ContractDeclaredIdSyntax (Set.insert ProcessReactionSyntax (Set.insert DelegatedInboxSyntax ((.features) profileV4)))))))))))
 
 runtimeProfileV1 :: RuntimeSemanticsProfile
 runtimeProfileV1 =
@@ -342,7 +358,7 @@
 runtimeProfileV5 =
   RuntimeSemanticsProfile
     "keiro-dsl/runtime-semantics/5"
-    (Set.insert StructuralNominalLeaves (Set.insert DelegatedInboxRuntime ((.capabilities) runtimeProfileV4)))
+    (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
@@ -392,6 +408,11 @@
   | WorkqueueFifoHeadsSyntax
   | ContractDeclaredIdSyntax
   | KeyedMapSyntax
+  | BareStructuralMappingSyntax
+  | CalendarDaySyntax
+  | TextSetSyntax
+  | RefinedBase16Syntax
+  | ExplicitIdAdmissionDomainSyntax
   deriving stock (Eq, Ord, Show)
 
 -- | The first released contract that owns each grammar feature.
diff --git a/src/Keiro/Dsl/Manifest.hs b/src/Keiro/Dsl/Manifest.hs
--- a/src/Keiro/Dsl/Manifest.hs
+++ b/src/Keiro/Dsl/Manifest.hs
@@ -38,10 +38,12 @@
 where
 
 import Data.List (nub, sort)
+import Data.Map.Strict qualified as Map
 import Data.Set qualified as Set
 import Data.Text (Text)
 import Data.Text qualified as T
 import Keiro.Dsl.AggregateType
+import Keiro.Dsl.ConsumerTypePlan (ConsumerTypePlan (..), ImportRequirement (..), planConsumerType)
 import Keiro.Dsl.GeneratedHaskellLanguage (generatedHaskellDefaultExtensions, generatedHaskellDefaultLanguage)
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.IdDomain (contractIdDomainContractFor)
@@ -49,6 +51,7 @@
 import Keiro.Dsl.NominalType
 import Keiro.Dsl.Scaffold (ScaffoldModule (..))
 import Keiro.Dsl.SemanticContract (CheckedService, checkedLanguageContract, checkedSpec, checkedTypeGraph, legacyCheckedService)
+import Keiro.Dsl.TypeGraph
 
 -- | Render a Cabal-pasteable manifest from the modules a scaffold run produced
 -- plus the node kinds present (which imply the dependency set). The first argument
@@ -120,10 +123,68 @@
 
 manifestDependenciesForService :: CheckedService -> [Text]
 manifestDependenciesForService service =
-  sort (nub ("base" : (.packages) (consumerPlanForService service) <> concatMap (depsForNode service) ((.nodes) spec)))
+  sort (nub ("base" : (.packages) (consumerPlanForService service) <> mappedShapeDependencies service <> concatMap (depsForNode service) ((.nodes) spec)))
   where
     spec = checkedSpec service
 
+-- Generated structural shapes and codecs compile even when their primitive
+-- dependencies are only reachable through a named mapping. Account for every
+-- declaration here rather than asking each aggregate, queue, and query root to
+-- rediscover the graph transitively.
+mappedShapeDependencies :: CheckedService -> [Text]
+mappedShapeDependencies service = case checkedTypeGraph service of
+  Left _ -> []
+  Right graph ->
+    Set.toAscList
+      ( Set.fromList
+          [ package
+          | ResolvedStructural _ shape <- Map.elems ((.declarations) graph),
+            expression <- shapeExpressions shape,
+            Right ConsumerTypePlan {imports = requirements} <- [planConsumerType graph expression],
+            ImportRequirement {package} <- requirements
+          ]
+          <> Set.fromList ["keiro-core" | any usesOwnedCodec (expressions graph)]
+          <> Set.fromList
+            [ package
+            | ResolvedStructural _ (RRefined Base16BytesV1) <- Map.elems ((.declarations) graph),
+              package <- ["bytestring", "keiro-core"]
+            ]
+      )
+  where
+    expressions graph =
+      [ expression
+      | ResolvedStructural _ shape <- Map.elems ((.declarations) graph),
+        expression <- shapeExpressions shape
+      ]
+    shapeExpressions =
+      foldMappedShape
+        MappedShapeAlgebra
+          { onRecord = \_ _ fields -> map (.valueType) fields,
+            onEnum = const [],
+            onUnion = \_ arms -> [payload | arm <- arms, Just payload <- [(.payload) arm]],
+            onBare = pure,
+            onRefined = const []
+          }
+    usesOwnedCodec =
+      foldTypeExpr
+        TypeExprAlgebra
+          { onText = False,
+            onInt = False,
+            onInteger = False,
+            onBool = False,
+            onNatural = False,
+            onTime = False,
+            onDay = True,
+            onTextSet = True,
+            onJson = False,
+            onOptional = id,
+            onList = id,
+            onMap = id,
+            onKeyedMap = \_ -> id,
+            onRef = const False,
+            onNominal = const False
+          }
+
 -- | The dependencies a single node kind implies (see the module header table).
 depsForNode :: CheckedService -> Node -> [Text]
 depsForNode service n = case n of
@@ -160,14 +221,19 @@
 
 workqueueDependencies :: WorkqueueNode -> [Text]
 workqueueDependencies workqueue =
-  ["containers" | any (typeExprUses isMap) expressions]
+  ["containers" | any (typeExprUses isContainer) expressions]
+    <> ["text" | any (typeExprUses isTextSet) expressions]
     <> ["time" | any (typeExprUses isTime) expressions]
   where
     expressions = [expression | field <- (.payload) workqueue, TypedQueueExpression expression <- [(.valueType) field]]
-    isMap TMap {} = True
-    isMap TKeyedMap {} = True
-    isMap _ = False
+    isContainer TMap {} = True
+    isContainer TKeyedMap {} = True
+    isContainer TTextSet = True
+    isContainer _ = False
+    isTextSet TTextSet = True
+    isTextSet _ = False
     isTime TTime = True
+    isTime TDay = True
     isTime _ = False
     typeExprUses predicate expression =
       predicate expression
@@ -181,7 +247,8 @@
 readModelDependencies :: ReadModelNode -> [Text]
 readModelDependencies readModel =
   ["aeson" | any (typeExprUses isJson) expressions]
-    <> ["containers" | any (typeExprUses isMap) expressions]
+    <> ["containers" | any (typeExprUses isContainer) expressions]
+    <> ["text" | any (typeExprUses isTextSet) expressions]
     <> ["time" | any (typeExprUses isTime) expressions]
   where
     expressions = case (.queryTypes) readModel of
@@ -189,10 +256,14 @@
       Just queryPair -> [(.input) queryPair, (.result) queryPair]
     isJson TJson = True
     isJson _ = False
-    isMap TMap {} = True
-    isMap TKeyedMap {} = True
-    isMap _ = False
+    isContainer TMap {} = True
+    isContainer TKeyedMap {} = True
+    isContainer TTextSet = True
+    isContainer _ = False
+    isTextSet TTextSet = True
+    isTextSet _ = False
     isTime TTime = True
+    isTime TDay = True
     isTime _ = False
     typeExprUses predicate expression =
       predicate expression
diff --git a/src/Keiro/Dsl/MappedCodecPlan.hs b/src/Keiro/Dsl/MappedCodecPlan.hs
--- a/src/Keiro/Dsl/MappedCodecPlan.hs
+++ b/src/Keiro/Dsl/MappedCodecPlan.hs
@@ -67,6 +67,8 @@
           onBool = Set.singleton PrimitiveAuthority,
           onNatural = Set.singleton PrimitiveAuthority,
           onTime = Set.singleton PrimitiveAuthority,
+          onDay = Set.singleton PrimitiveAuthority,
+          onTextSet = Set.singleton PrimitiveAuthority,
           onJson = Set.singleton ExplicitJsonAuthority,
           onOptional = id,
           onList = id,
@@ -89,6 +91,8 @@
       RBool -> primitive candidate
       RNatural -> primitive candidate
       RTime -> primitive candidate
+      RDay -> "encodeCalendarDay (" <> candidate <> ")"
+      RTextSet -> "encodeTextSet (" <> candidate <> ")"
       RJson -> candidate
       ROptional nested ->
         "maybe Null (\\" <> item depth <> " -> " <> render (depth + 1) nested (item depth) <> ") (" <> candidate <> ")"
@@ -139,6 +143,8 @@
       RBool -> "parseJSON"
       RNatural -> "parseJSON"
       RTime -> "parseJSON"
+      RDay -> "parseCalendarDay"
+      RTextSet -> "parseTextSet"
       RJson -> "pure"
       ROptional nested ->
         "\\" <> value depth <> " -> case " <> value depth <> " of Null -> pure Nothing; " <> other depth <> " -> Just <$> (" <> render (depth + 1) nested <> ") " <> other depth
diff --git a/src/Keiro/Dsl/MappedConsumer.hs b/src/Keiro/Dsl/MappedConsumer.hs
--- a/src/Keiro/Dsl/MappedConsumer.hs
+++ b/src/Keiro/Dsl/MappedConsumer.hs
@@ -16,7 +16,8 @@
 import Data.Map.Strict qualified as Map
 import Data.Text (Text)
 import Data.Text qualified as T
-import Keiro.Dsl.Grammar (HaskellSource (..), Spec)
+import Keiro.Codec.IdDomain (v5OrV7IdDomainVersion)
+import Keiro.Dsl.Grammar (HaskellSource (..), IdAdmission (..), Spec)
 import Keiro.Dsl.NominalType
 import Keiro.Dsl.SemanticContract (CheckedService, checkedSpec, checkedTypeGraph, legacyCheckedService)
 import Keiro.Dsl.TypeGraph
@@ -236,7 +237,8 @@
 
 nominalRepresentationIdentity :: ResolvedNominalType -> Text
 nominalRepresentationIdentity nominal = case (.representation) nominal of
-  IdRepresentation prefix -> "KindID:" <> prefix
+  IdRepresentation prefix TypeIdV7 -> "KindID:" <> prefix
+  IdRepresentation prefix TypeIdV5OrV7 -> "KindID:" <> prefix <> ":" <> v5OrV7IdDomainVersion
   EnumRepresentation constructors ->
     "enum:" <> T.intercalate "," [constructor <> "=" <> wire | (constructor, wire) <- NE.toList constructors]
   ScalarRepresentation representation -> case representation of
diff --git a/src/Keiro/Dsl/MappedDiff.hs b/src/Keiro/Dsl/MappedDiff.hs
--- a/src/Keiro/Dsl/MappedDiff.hs
+++ b/src/Keiro/Dsl/MappedDiff.hs
@@ -75,6 +75,8 @@
   = RecordView !Name !UnknownFields ![ResolvedWireField]
   | EnumView ![WireEnum]
   | UnionView !UnionEncoding ![ResolvedWireArm]
+  | BareView !ExprView
+  | RefinedView !RefinedWirePolicy
 
 data ExprView
   = ExprText
@@ -83,6 +85,8 @@
   | ExprBool
   | ExprNatural
   | ExprTime
+  | ExprDay
+  | ExprTextSet
   | ExprJson
   | ExprOptional !ExprView
   | ExprList !ExprView
@@ -106,7 +110,9 @@
     MappedShapeAlgebra
       { onRecord = RecordView,
         onEnum = EnumView,
-        onUnion = UnionView
+        onUnion = UnionView,
+        onBare = BareView . exprView,
+        onRefined = RefinedView
       }
 
 exprView :: ResolvedTypeExpr -> ExprView
@@ -119,6 +125,8 @@
         onBool = ExprBool,
         onNatural = ExprNatural,
         onTime = ExprTime,
+        onDay = ExprDay,
+        onTextSet = ExprTextSet,
         onJson = ExprJson,
         onOptional = ExprOptional,
         onList = ExprList,
@@ -263,6 +271,18 @@
     | oldEncoding /= newEncoding
     ]
       ++ diffUnion paths declaration oldArms newArms
+  (BareView oldExpression, BareView newExpression) ->
+    diffExprViews paths declaration "value" oldExpression newExpression
+  (RefinedView oldPolicy, RefinedView newPolicy)
+    | oldPolicy == newPolicy -> []
+    | otherwise ->
+        [ finding
+            paths
+            declaration
+            "value"
+            MappedFieldTypeChanged
+            "refined wire policy changed; retain the old reader and version every affected persisted surface"
+        ]
   _ ->
     [ finding
         paths
diff --git a/src/Keiro/Dsl/NominalType.hs b/src/Keiro/Dsl/NominalType.hs
--- a/src/Keiro/Dsl/NominalType.hs
+++ b/src/Keiro/Dsl/NominalType.hs
@@ -36,13 +36,13 @@
 import Data.Text qualified as T
 import GHC.Generics (Generic)
 import Keiro.Dsl.Grammar
-import Keiro.Dsl.IdDomain (enforcedIdDomainVersion)
+import Keiro.Dsl.IdDomain (enforcedIdDomainVersion, v5OrV7IdDomainVersion)
 import Keiro.Dsl.LanguageVersion (RuntimeCapability (..), runtimeProfileHasCapability)
 import Keiro.Dsl.SemanticContract (CheckedService, EffectiveLanguageContract (..), checkedLanguageContract, checkedSpec)
 import Keiro.Dsl.TypeGraph
 
 data NominalRepresentation
-  = IdRepresentation !Text
+  = IdRepresentation !Text !IdAdmission
   | EnumRepresentation !(NonEmpty (Name, Text))
   | ScalarRepresentation !NominalScalarRepresentation
   deriving stock (Eq, Ord, Show, Generic)
@@ -62,7 +62,7 @@
 data NominalEqualityDomain
   = LegacyUnrestrictedTextDomain
   | TypeIdTextDomain !Text
-  | EnforcedTypeIdV7TextDomain !Text !Text
+  | EnforcedTypeIdTextDomain !Text !Text
   | FiniteTextDomain !(NonEmpty Text)
   deriving stock (Eq, Ord, Show, Generic)
 
@@ -103,13 +103,13 @@
 
 nominalEqualityContractForService :: EffectiveLanguageContract -> ResolvedNominalType -> Maybe CheckedNominalEquality
 nominalEqualityContractForService languageContract nominal = case (.representation) nominal of
-  IdRepresentation prefix ->
+  IdRepresentation prefix admission ->
     Just
       CheckedNominalEquality
         { keyRepresentation = NominalTextEqualityKey,
           domain =
             if enforcesNominalEqualityV2
-              then EnforcedTypeIdV7TextDomain prefix enforcedIdDomainVersion
+              then EnforcedTypeIdTextDomain prefix (idAdmissionVersion admission)
               else case (.ownership) nominal of
                 GeneratedNominal -> LegacyUnrestrictedTextDomain
                 ConsumerNominal {} -> TypeIdTextDomain prefix,
@@ -148,8 +148,14 @@
     renderEqualityKey NominalTextEqualityKey = "Text"
     renderEqualityDomain LegacyUnrestrictedTextDomain = "legacy-unrestricted-text"
     renderEqualityDomain (TypeIdTextDomain prefix) = "typeid-text:" <> prefix
-    renderEqualityDomain (EnforcedTypeIdV7TextDomain prefix contractVersion) =
-      "typeid-v7-text:" <> prefix <> ":" <> contractVersion
+    renderEqualityDomain (EnforcedTypeIdTextDomain prefix contractVersion) =
+      ( if contractVersion == enforcedIdDomainVersion
+          then "typeid-v7-text:"
+          else "typeid-v5-or-v7-text:"
+      )
+        <> prefix
+        <> ":"
+        <> contractVersion
     renderEqualityDomain (FiniteTextDomain values) = "finite-text:" <> T.intercalate "," (NE.toList values)
     renderOwnership GeneratedNominal = "owner=generated"
     renderOwnership (ConsumerNominal binding) =
@@ -245,7 +251,7 @@
   ResolvedNominalType
     { name = (.name) leaf,
       representation = case (.kind) leaf of
-        NominalIdLeaf prefix -> IdRepresentation prefix
+        NominalIdLeaf prefix admission -> IdRepresentation prefix admission
         NominalEnumLeaf constructors -> EnumRepresentation constructors
         NominalScalarLeaf representation -> ScalarRepresentation representation,
       ownership = case (.ownership) leaf of
@@ -272,10 +278,12 @@
 
 mappedName :: MappedDecl -> Name
 mappedName MappedStructural {msName = name} = name
+mappedName MappedRefined {mrName = name} = name
 mappedName MappedOpaque {moName = name} = name
 
 mappedLoc :: MappedDecl -> Loc
 mappedLoc MappedStructural {msLoc = loc} = loc
+mappedLoc MappedRefined {mrLoc = loc} = loc
 mappedLoc MappedOpaque {moLoc = loc} = loc
 
 nodeIdentityLocal :: Node -> (Text, Name, Loc)
@@ -297,3 +305,7 @@
   NProjectionOwner value -> ("projection-owner", (.name) value, (.loc) value)
   NWorkflow value -> ("workflow", (.id) value, workflowNodeLoc value)
   NOperation value -> ("operation", (.name) value, (.loc) value)
+
+idAdmissionVersion :: IdAdmission -> Text
+idAdmissionVersion TypeIdV7 = enforcedIdDomainVersion
+idAdmissionVersion TypeIdV5OrV7 = v5OrV7IdDomainVersion
diff --git a/src/Keiro/Dsl/Parser/Declaration.hs b/src/Keiro/Dsl/Parser/Declaration.hs
--- a/src/Keiro/Dsl/Parser/Declaration.hs
+++ b/src/Keiro/Dsl/Parser/Declaration.hs
@@ -6,6 +6,7 @@
   )
 where
 
+import Data.Maybe (fromMaybe)
 import Keiro.Dsl.Frontend.Internal (FrontendContext)
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.LanguageVersion
@@ -14,7 +15,7 @@
 import Keiro.Dsl.Parser.Mapped (pUsingNominalBinding)
 import Keiro.Dsl.Source (Located, mapLocated)
 import Keiro.Dsl.Syntax (SurfaceElement (..))
-import Text.Megaparsec (many, sepBy1)
+import Text.Megaparsec (choice, many, sepBy1)
 
 pIdDecl :: FrontendContext -> P IdDecl
 pIdDecl context = do
@@ -24,8 +25,20 @@
   _ <- symbol "prefix"
   _ <- symbol "="
   pfx <- wireWord
+  admission <-
+    fromMaybe TypeIdV7
+      <$> optionalLanguageFeature context ExplicitIdAdmissionDomainSyntax "domain" pIdAdmission
   binding <- optionalLanguageFeature context NominalBindingSyntax "using" pUsingNominalBinding
-  pure IdDecl {name = name, prefix = pfx, binding = binding, loc = loc}
+  pure IdDecl {name = name, prefix = pfx, admission = admission, binding = binding, loc = loc}
+
+pIdAdmission :: P IdAdmission
+pIdAdmission = do
+  keyword "domain"
+  _ <- symbol "="
+  choice
+    [ TypeIdV5OrV7 <$ symbol "typeid-v5-or-v7",
+      TypeIdV7 <$ symbol "typeid-v7"
+    ]
 
 pEnumDecl :: FrontendContext -> P EnumDecl
 pEnumDecl context = do
diff --git a/src/Keiro/Dsl/Parser/Mapped.hs b/src/Keiro/Dsl/Parser/Mapped.hs
--- a/src/Keiro/Dsl/Parser/Mapped.hs
+++ b/src/Keiro/Dsl/Parser/Mapped.hs
@@ -18,7 +18,7 @@
 -- Consumer-owned mapped and nominal types
 --------------------------------------------------------------------------------
 
-data MappedKind = MappedRecord | MappedEnum | MappedUnion
+data MappedKind = MappedRecord | MappedEnum | MappedUnion | MappedBare
 
 data MappedClause
   = MCHaskell HaskellSource
@@ -30,6 +30,7 @@
   | MCCodec Text
   | MCCodecVersion Text
   | MCShape MappedShape
+  | MCRefinedPolicy RefinedWirePolicy
 
 pMappedTopItem :: FrontendContext -> P SurfaceTopItem
 pMappedTopItem context = do
@@ -43,6 +44,7 @@
           requireLanguageFeatureAt context NominalBindingSyntax (spanOf marker)
           fail "unreachable enabled nominal syntax in predecessor grammar",
       SurfaceMapped <$> pMappedStructural context loc,
+      SurfaceMapped <$> pMappedRefined context loc,
       SurfaceMapped <$> pMappedOpaque loc
     ]
 
@@ -53,7 +55,8 @@
     choice
       [ MappedRecord <$ keyword "record",
         MappedEnum <$ keyword "enum",
-        MappedUnion <$ keyword "union"
+        MappedUnion <$ keyword "union",
+        MappedBare <$ languageFeatureKeyword context BareStructuralMappingSyntax "value"
       ]
   name <- ident
   clauses <- braces (many (pStructuralClause context kind))
@@ -98,6 +101,31 @@
         moLoc = loc
       }
 
+pMappedRefined :: FrontendContext -> Loc -> P MappedDecl
+pMappedRefined context loc = do
+  languageFeatureKeyword context RefinedBase16Syntax "refined"
+  name <- ident
+  clauses <- braces (many pRefinedClause)
+  hs <- oneClause "haskell" (\case MCHaskell value -> Just value; _ -> Nothing) clauses
+  binding <- oneClause "binding" (\case MCBinding value -> Just value; _ -> Nothing) clauses
+  bindingVersion <- oneClause "binding-version" (\case MCBindingVersion value -> Just value; _ -> Nothing) clauses
+  canonical <- oneClause "canonical-type" (\case MCCanonical value -> Just value; _ -> Nothing) clauses
+  fixtures <- oneClause "fixtures" (\case MCFixtures value -> Just value; _ -> Nothing) clauses
+  initial <- oneClause "initial" (\case MCInitial value -> Just value; _ -> Nothing) clauses
+  policy <- requiredClause "wire" (\case MCRefinedPolicy value -> Just value; _ -> Nothing) clauses
+  pure
+    MappedRefined
+      { mrName = name,
+        mrHaskell = hs,
+        mrBinding = binding,
+        mrBindingVersion = bindingVersion,
+        mrCanonical = canonical,
+        mrFixtures = fixtures,
+        mrInitial = initial,
+        mrPolicy = policy,
+        mrLoc = loc
+      }
+
 pNominalScalarAfterMapped :: Loc -> P NominalScalarDecl
 pNominalScalarAfterMapped loc = do
   keyword "nominal"
@@ -172,6 +200,18 @@
       MCInitial <$> pQuotedFact "initial"
     ]
 
+pRefinedClause :: P MappedClause
+pRefinedClause =
+  choice
+    [ MCHaskell <$> pHaskellSource,
+      MCBindingVersion <$> pQuotedFact "binding-version",
+      MCBinding <$> pQuotedFact "binding",
+      MCCanonical <$> pQuotedFact "canonical-type",
+      MCFixtures <$> pQuotedFact "fixtures",
+      MCInitial <$> pQuotedFact "initial",
+      MCRefinedPolicy Base16BytesV1 <$ (keyword "wire" *> keyword "base16-bytes")
+    ]
+
 pHaskellSource :: P HaskellSource
 pHaskellSource = do
   keyword "haskell"
@@ -215,6 +255,7 @@
       unknownFields <- pUnknownFieldsFact
       arms <- braces (many (pWireArm context))
       pure (ShapeUnion (TaggedObject tagField contentsField unknownFields) arms)
+    MappedBare -> ShapeBare <$> pMappedTypeExpr context
 
 pUnknownFieldsFact :: P UnknownFields
 pUnknownFieldsFact = do
@@ -271,6 +312,8 @@
       TBool <$ keyword "Bool",
       TNatural <$ keyword "Natural",
       TTime <$ (keyword "Time" <|> keyword "UTCTime"),
+      TDay <$ languageFeatureKeyword context CalendarDaySyntax "Day",
+      TTextSet <$ pTextSet,
       TJson <$ keyword "Json",
       TRef <$> ident
     ]
@@ -291,9 +334,14 @@
           TBool <$ keyword "Bool",
           TNatural <$ keyword "Natural",
           TTime <$ (keyword "Time" <|> keyword "UTCTime"),
+          TDay <$ languageFeatureKeyword context CalendarDaySyntax "Day",
+          TTextSet <$ pTextSet,
           TJson <$ keyword "Json",
           TRef <$> ident
         ]
+    pTextSet = do
+      languageFeatureKeyword context TextSetSyntax "Set"
+      keyword "Text"
 
 languageFeatureKeyword :: FrontendContext -> LanguageFeature -> Text -> P ()
 languageFeatureKeyword context feature spelling = do
diff --git a/src/Keiro/Dsl/PrettyPrint.hs b/src/Keiro/Dsl/PrettyPrint.hs
--- a/src/Keiro/Dsl/PrettyPrint.hs
+++ b/src/Keiro/Dsl/PrettyPrint.hs
@@ -109,12 +109,20 @@
 docId :: IdDecl -> Doc ann
 docId d =
   case (.binding) d of
-    Nothing -> "id" <+> pretty ((.name) d) <+> ("prefix=" <> pretty ((.prefix) d))
+    Nothing -> idHeader
     Just binding ->
       vsep $
-        ["id" <+> pretty ((.name) d) <+> ("prefix=" <> pretty ((.prefix) d)) <+> "using" <+> "{"]
+        [idHeader <+> "using" <+> "{"]
           ++ map (indent 2) (docNominalBindingFacts binding)
           ++ ["}"]
+  where
+    idHeader =
+      "id"
+        <+> pretty ((.name) d)
+        <+> ("prefix=" <> pretty ((.prefix) d))
+        <> case (.admission) d of
+          TypeIdV7 -> mempty
+          TypeIdV5OrV7 -> " domain=typeid-v5-or-v7"
 
 docEnum :: EnumDecl -> Doc ann
 docEnum d =
@@ -149,6 +157,16 @@
       ++ maybe [] (pure . indent 2 . docQuotedFact "fixtures") fixtures
       ++ maybe [] (pure . indent 2 . docQuotedFact "initial") initial
       ++ [indent 2 (docMappedShape shape), "}"]
+docMapped MappedRefined {mrName = name, mrHaskell = haskell, mrBinding = binding, mrBindingVersion = bindingVersion, mrCanonical = canonical, mrFixtures = fixtures, mrInitial = initial, mrPolicy = policy} =
+  vsep $
+    ["mapped refined" <+> pretty name <+> "{"]
+      ++ maybe [] (pure . indent 2 . docHaskellSource) haskell
+      ++ maybe [] (pure . indent 2 . docQuotedFact "binding") binding
+      ++ maybe [] (pure . indent 2 . docQuotedFact "binding-version") bindingVersion
+      ++ maybe [] (pure . indent 2 . docQuotedFact "canonical-type") canonical
+      ++ maybe [] (pure . indent 2 . docQuotedFact "fixtures") fixtures
+      ++ maybe [] (pure . indent 2 . docQuotedFact "initial") initial
+      ++ [indent 2 ("wire" <+> docRefinedWirePolicy policy), "}"]
 docMapped MappedOpaque {moName = name, moHaskell = haskell, moCodecId = codec, moCodecVersion = version, moFixtures = fixtures, moInitial = initial} =
   vsep $
     ["mapped opaque" <+> pretty name <+> "{"]
@@ -184,6 +202,8 @@
 docShapeKind (ShapeRecord _ _ _) = "record"
 docShapeKind (ShapeEnum _) = "enum"
 docShapeKind (ShapeUnion _ _) = "union"
+docShapeKind (ShapeBare _) = "value"
+docShapeKind (ShapeRefined _) = "value"
 
 docHaskellSource :: HaskellSource -> Doc ann
 docHaskellSource source =
@@ -217,7 +237,12 @@
     ]
       ++ map (indent 2 . docWireArm) arms
       ++ ["}"]
+docMappedShape (ShapeBare expression) = "wire" <+> docTypeExpr expression
+docMappedShape (ShapeRefined policy) = "wire" <+> docRefinedWirePolicy policy
 
+docRefinedWirePolicy :: RefinedWirePolicy -> Doc ann
+docRefinedWirePolicy Base16BytesV1 = "base16-bytes"
+
 docUnknownFields :: UnknownFields -> Doc ann
 docUnknownFields RejectUnknown = "reject"
 docUnknownFields IgnoreUnknown = "ignore"
@@ -263,6 +288,8 @@
 docTypeExpr TBool = "Bool"
 docTypeExpr TNatural = "Natural"
 docTypeExpr TTime = "Time"
+docTypeExpr TDay = "Day"
+docTypeExpr TTextSet = "Set Text"
 docTypeExpr TJson = "Json"
 docTypeExpr (TOptional value) = "Optional" <+> docTypeArgument value
 docTypeExpr (TList value) = "List" <+> docTypeArgument value
diff --git a/src/Keiro/Dsl/ProcessReaction.hs b/src/Keiro/Dsl/ProcessReaction.hs
--- a/src/Keiro/Dsl/ProcessReaction.hs
+++ b/src/Keiro/Dsl/ProcessReaction.hs
@@ -336,6 +336,7 @@
       "Bool" -> TBool
       "Natural" -> TNatural
       "Time" -> TTime
+      "Day" -> TDay
       name -> TRef name
     payloadName (PayloadConstant name _) = name
     payloadName (PayloadTyped name _) = name
diff --git a/src/Keiro/Dsl/ReadModelQueryContract.hs b/src/Keiro/Dsl/ReadModelQueryContract.hs
--- a/src/Keiro/Dsl/ReadModelQueryContract.hs
+++ b/src/Keiro/Dsl/ReadModelQueryContract.hs
@@ -135,6 +135,8 @@
         onBool = Set.empty,
         onNatural = Set.empty,
         onTime = Set.empty,
+        onDay = Set.empty,
+        onTextSet = Set.empty,
         onJson = Set.empty,
         onOptional = id,
         onList = id,
diff --git a/src/Keiro/Dsl/ReplayImpact.hs b/src/Keiro/Dsl/ReplayImpact.hs
--- a/src/Keiro/Dsl/ReplayImpact.hs
+++ b/src/Keiro/Dsl/ReplayImpact.hs
@@ -30,6 +30,7 @@
 import Data.Set qualified as Set
 import Data.Text (Text)
 import Data.Text qualified as Text
+import Keiro.Codec.IdDomain (v5OrV7IdDomainVersion)
 import Keiro.Dsl.AggregateType
 import Keiro.Dsl.CanonicalEncoding (canonicalExpr, canonicalTransition)
 import Keiro.Dsl.FieldIdentity (ResolvedFieldIdentity (..), resolveAggregateFieldIdentity)
@@ -336,7 +337,8 @@
 
 nominalRepresentationSurface :: NominalRepresentation -> Text
 nominalRepresentationSurface representation = case representation of
-  IdRepresentation prefix -> "id:" <> prefix
+  IdRepresentation prefix TypeIdV7 -> "id:" <> prefix
+  IdRepresentation prefix TypeIdV5OrV7 -> "id:" <> prefix <> ";domain=" <> v5OrV7IdDomainVersion
   EnumRepresentation constructors -> "enum:" <> Text.intercalate "," [constructor <> "=" <> wire | (constructor, wire) <- NE.toList constructors]
   ScalarRepresentation scalar -> case scalar of
     NominalText -> "scalar:Text"
diff --git a/src/Keiro/Dsl/RouterSelection.hs b/src/Keiro/Dsl/RouterSelection.hs
--- a/src/Keiro/Dsl/RouterSelection.hs
+++ b/src/Keiro/Dsl/RouterSelection.hs
@@ -39,8 +39,8 @@
 import Data.Text (Text)
 import Data.Text qualified as T
 import Data.Text.Encoding qualified as Text
-import Data.TypeID qualified as TypeID
 import GHC.Generics (Generic)
+import Keiro.Codec.IdDomain (typeIdV5OrV7Domain, typeIdV7Domain, validateIdDomainText)
 import Keiro.Dsl.AggregateType
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.LanguageVersion (LanguageFeature (DeclarativeRouterSelectionSyntax), languageSupportsFeature)
@@ -455,14 +455,15 @@
       _ -> False
 
     resolveIdLiteral loc typeName value = case Map.lookup typeName ((.nominalLeaves) graph) of
-      Just NominalLeaf {kind = NominalIdLeaf prefix} -> case TypeID.parseText value of
+      Just NominalLeaf {kind = NominalIdLeaf prefix admission} -> case validateIdDomainText (contract admission prefix) value of
         Left parseError -> selectionFailure loc SelectionExpressionTypeMismatch ("invalid " <> typeName <> " literal: " <> T.pack (show parseError))
-        Right parsed
-          | TypeID.getPrefix parsed /= prefix -> selectionFailure loc SelectionExpressionTypeMismatch ("ID literal prefix must be '" <> prefix <> "'")
-          | otherwise -> literal loc (SelectionNominal typeName) (CheckedIdLiteral typeName value)
+        Right () -> literal loc (SelectionNominal typeName) (CheckedIdLiteral typeName value)
       Just _ -> selectionFailure loc SelectionExpressionTypeMismatch ("selection ID literal type '" <> typeName <> "' is not a declared ID")
       Nothing -> selectionFailure loc SelectionExpressionTypeMismatch ("unknown selection ID literal type '" <> typeName <> "'")
 
+    contract TypeIdV7 = typeIdV7Domain
+    contract TypeIdV5OrV7 = typeIdV5OrV7Domain
+
 resolvePath :: TypeGraph -> Loc -> ResolvedTypeExpr -> [Name] -> Either (NonEmpty RouterSelectionDiagnostic) (SelectionScalarType, [CheckedSelectionPathSegment])
 resolvePath graph diagnosticLoc = go []
   where
@@ -519,6 +520,8 @@
   RBool -> Just SelectionBool
   RNatural -> Just SelectionNatural
   RTime -> Just SelectionTime
+  RDay -> Nothing
+  RTextSet -> Nothing
   RJson -> Nothing
   ROptional {} -> Nothing
   RList {} -> Nothing
@@ -619,6 +622,8 @@
   RBool -> atom "Bool"
   RNatural -> atom "Natural"
   RTime -> atom "Time"
+  RDay -> atom "Day"
+  RTextSet -> atom "Set(Text)"
   RJson -> atom "Json"
   ROptional value -> tuple [atom "Optional", canonicalResolvedType value]
   RList value -> tuple [atom "List", canonicalResolvedType value]
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
@@ -52,6 +52,7 @@
     obsoleteGeneratedOutputHooks,
     obsoleteGeneratedOutputHooksForService,
     scaffoldProcess,
+    scaffoldProcessForService,
     scaffoldRouter,
     scaffoldRouterForService,
     scaffoldContract,
@@ -130,7 +131,7 @@
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellImport
 import Keiro.Dsl.HaskellName qualified as HaskellName
-import Keiro.Dsl.IdDomain (IdDomainContract, contractIdDomainContractFor, idDomainContractFor, idDomainPrefix, idDomainSampleText)
+import Keiro.Dsl.IdDomain (IdDomainContract, contractIdDomainContractFor, idDomainAdmission, idDomainContractFor, idDomainContractForAdmission, idDomainPrefix, idDomainSampleText)
 import Keiro.Dsl.LanguageVersion (SourceLanguage (LegacyUnversioned), languageVersionText)
 import Keiro.Dsl.MappedCodecPlan
 import Keiro.Dsl.NominalType
@@ -934,7 +935,9 @@
                   BranchUnion
                     ((.tagField) encoding)
                     ((.contentsField) encoding)
-                    [BranchArm ((.tag) arm) (branchExpr graph <$> (.payload) arm) | arm <- arms]
+                    [BranchArm ((.tag) arm) (branchExpr graph <$> (.payload) arm) | arm <- arms],
+                onBare = branchExpr graph,
+                onRefined = const BranchScalar
               }
             shape,
         onOpaqueDecl = const BranchScalar
@@ -950,6 +953,8 @@
         onBool = BranchScalar,
         onNatural = BranchScalar,
         onTime = BranchScalar,
+        onDay = BranchScalar,
+        onTextSet = BranchScalar,
         onJson = BranchScalar,
         onOptional = BranchOptional,
         onList = BranchList,
@@ -1153,9 +1158,15 @@
         MappedShapeAlgebra
           { onRecord = \constructor _ fields -> [recordCase toShapeDirection constructor fields],
             onEnum = \entries -> map (enumCase toShapeDirection . (.ctor)) entries,
-            onUnion = \_ arms -> map (unionCase toShapeDirection) arms
+            onUnion = \_ arms -> map (unionCase toShapeDirection) arms,
+            onBare = \_ -> [bareCase toShapeDirection],
+            onRefined = const [bareCase toShapeDirection]
           }
         shape
+    bareCase toShapeDirection =
+      variable <> " -> " <> holeFor toShapeDirection "value"
+      where
+        variable = if toShapeDirection then "_domainValue" else "_shapeValue"
     recordCase toShapeDirection constructor fields =
       sourceCtor
         <> arguments variables
@@ -1236,7 +1247,9 @@
     MappedShapeAlgebra
       { onRecord = \constructor _ _ -> [constructor],
         onEnum = map (.ctor),
-        onUnion = \_ -> map (.ctor)
+        onUnion = \_ -> map (.ctor),
+        onBare = const [],
+        onRefined = const []
       }
 
 structuralShapeReferences :: Context -> StructuralDecl -> ResolvedMappedShape -> [HaskellReference]
@@ -1255,7 +1268,9 @@
     MappedShapeAlgebra
       { onRecord = \_ _ -> map (.haskell),
         onEnum = const [],
-        onUnion = \_ _ -> []
+        onUnion = \_ _ -> [],
+        onBare = const [],
+        onRefined = const []
       }
 
 nominalRepresentationEncoderReference :: Context -> ResolvedNominalType -> HaskellReference
@@ -1298,7 +1313,7 @@
   where
     domainType = renderReferenceOrDie importPlan (haskellTypeReference ((.haskell) binding))
     representationType = case (.representation) nominal of
-      IdRepresentation prefix -> "(KindID " <> tshow prefix <> ")"
+      IdRepresentation prefix _ -> "(KindID " <> tshow prefix <> ")"
       EnumRepresentation {} ->
         renderReferenceOrDie
           importPlan
@@ -1404,8 +1419,8 @@
         [ (nominal, contract)
         | owner <- owners,
           let nominal = (.declaration) owner,
-          IdRepresentation prefix <- [(.representation) nominal],
-          Just contract <- [idDomainContractFor languageContract prefix]
+          IdRepresentation prefix admission <- [(.representation) nominal],
+          Just contract <- [idDomainContractForAdmission languageContract admission prefix]
         ]
   where
     spec = checkedSpec service
@@ -1457,6 +1472,8 @@
     shapeExpressions (RRecord _ _ fields) = map (.valueType) fields
     shapeExpressions (RUnion _ arms) = [payload | arm <- arms, payload <- maybe [] pure ((.payload) arm)]
     shapeExpressions REnum {} = []
+    shapeExpressions (RBare expression) = [expression]
+    shapeExpressions RRefined {} = []
 
 emitStructuralNominalLeaves :: Context -> Set.Set Name -> [NominalLeaf] -> Text
 emitStructuralNominalLeaves ctx keyedNames leaves =
@@ -1495,7 +1512,7 @@
         <> ["import Data.KindID qualified as KindID" | any isConsumerId leaves]
         <> ["import Data.Text (Text)" | not (Set.null keyedNames)]
         <> ["import Data.Text qualified as T" | any isGeneratedId leaves]
-        <> ["import Keiro.Codec.IdDomain (parseKindIdV7Text)" | any isConsumerId leaves]
+        <> ["import Keiro.Codec.IdDomain (" <> T.intercalate ", " consumerIdImports <> ")" | not (null consumerIdImports)]
         <> ["import Keiro.Codec.Nominal (nominalFromRepresentation, nominalToRepresentation)" | any isConsumer leaves]
         <> T.lines (renderPlannedImports importPlan)
     aesonImports =
@@ -1505,7 +1522,7 @@
     leafReferences leaf =
       nominalLeafTypeReference ctx leaf
         : case ((.kind) leaf, (.ownership) leaf) of
-          (NominalIdLeaf _, GeneratedLeaf) ->
+          (NominalIdLeaf _ _, GeneratedLeaf) ->
             [ generatedNominalValueReference ("parse" <> (.name) leaf),
               generatedNominalValueReference (lowerFirst ((.name) leaf) <> "Text")
             ]
@@ -1525,8 +1542,8 @@
     generatedNominalConstructorReference occurrence =
       HaskellReference (generatedNominalModule ctx) occurrence ConstructorNamespace RequireQualified
     emitLeaf leaf = case ((.kind) leaf, (.ownership) leaf) of
-      (NominalIdLeaf _, GeneratedLeaf) -> emitGeneratedId leaf
-      (NominalIdLeaf prefix, ConsumerLeaf binding) -> emitConsumerId leaf prefix binding
+      (NominalIdLeaf _ _, GeneratedLeaf) -> emitGeneratedId leaf
+      (NominalIdLeaf prefix admission, ConsumerLeaf binding) -> emitConsumerId leaf prefix admission binding
       (NominalEnumLeaf constructors, GeneratedLeaf) -> emitGeneratedEnum leaf constructors
       (NominalEnumLeaf constructors, ConsumerLeaf binding) -> emitConsumerEnum leaf constructors binding
       (NominalScalarLeaf _, ConsumerLeaf binding) -> emitConsumerScalar leaf binding
@@ -1554,7 +1571,7 @@
                 ]
               else []
         )
-    emitConsumerId leaf prefix binding =
+    emitConsumerId leaf prefix admission binding =
       nl
         ( [ encodeName leaf <> " :: " <> leafType leaf <> " -> Value",
             encodeName leaf <> " = String . KindID.toText . nominalToRepresentation " <> bindingValue binding,
@@ -1562,7 +1579,7 @@
             "",
             parseName leaf <> " :: Value -> Parser " <> leafType leaf,
             parseName leaf <> " = withText " <> tshow ((.name) leaf) <> " $ \\input ->",
-            "  case parseKindIdV7Text @" <> tshow prefix <> " input of",
+            "  case " <> parseKindIdTextCall admission prefix "input" <> " of",
             "    Left reason -> fail (show reason)",
             "    Right representation -> pure (nominalFromRepresentation " <> bindingValue binding <> " representation)",
             "{-# NOINLINE " <> parseName leaf <> " #-}"
@@ -1575,7 +1592,7 @@
                   "{-# NOINLINE " <> renderKeyName leaf <> " #-}",
                   "",
                   parseKeyName leaf <> " :: Text -> Parser " <> leafType leaf,
-                  parseKeyName leaf <> " input = case parseKindIdV7Text @" <> tshow prefix <> " input of",
+                  parseKeyName leaf <> " input = case " <> parseKindIdTextCall admission prefix "input" <> " of",
                   "  Left reason -> fail (show reason)",
                   "  Right representation -> pure (nominalFromRepresentation " <> bindingValue binding <> " representation)",
                   "{-# NOINLINE " <> parseKeyName leaf <> " #-}"
@@ -1643,6 +1660,8 @@
     isConsumerScalar leaf = case ((.kind) leaf, (.ownership) leaf) of (NominalScalarLeaf {}, ConsumerLeaf {}) -> True; _ -> False
     isId leaf = case (.kind) leaf of NominalIdLeaf {} -> True; NominalEnumLeaf {} -> False; NominalScalarLeaf {} -> False
     isEnum leaf = case (.kind) leaf of NominalEnumLeaf {} -> True; NominalIdLeaf {} -> False; NominalScalarLeaf {} -> False
+    consumerIdAdmissions = [admission | NominalLeaf {kind = NominalIdLeaf _ admission, ownership = ConsumerLeaf {}} <- leaves]
+    consumerIdImports = idDomainParserImports consumerIdAdmissions
 
 generatedNominalInternalModule :: Context -> Text
 generatedNominalInternalModule ctx = generatedNominalModule ctx <> ".Internal"
@@ -1671,17 +1690,25 @@
       | owner <- owners,
         let nominal = (.declaration) owner,
         case (.representation) nominal of
-          IdRepresentation prefix -> not (isJust (idDomainContractFor languageContract prefix))
+          IdRepresentation prefix _ -> not (isJust (idDomainContractFor languageContract prefix))
           EnumRepresentation {} -> True
           ScalarRepresentation {} -> False
       ]
     hasExactEnum = any (\owner -> case (.representation) ((.declaration) owner) of EnumRepresentation {} -> True; _ -> False) exactEqualityOwners
-    hasExactEnforcedId = any (\owner -> case (.representation) ((.declaration) owner) of IdRepresentation prefix -> isJust (idDomainContractFor languageContract prefix); _ -> False) exactEqualityOwners
+    hasExactEnforcedId = any (\owner -> case (.representation) ((.declaration) owner) of IdRepresentation prefix _ -> isJust (idDomainContractFor languageContract prefix); _ -> False) exactEqualityOwners
+    equalityIdDomainImports =
+      ["idDomainTextPattern"]
+        <> idDomainConstructorImports
+          [ admission
+          | owner <- exactEqualityOwners,
+            IdRepresentation prefix admission <- [(.representation) ((.declaration) owner)],
+            isJust (idDomainContractFor languageContract prefix)
+          ]
     enforcingIds =
       [ nominal
       | owner <- owners,
         let nominal = (.declaration) owner,
-        IdRepresentation prefix <- [(.representation) nominal],
+        IdRepresentation prefix _ <- [(.representation) nominal],
         Just _ <- [idDomainContractFor languageContract prefix]
       ]
     moduleHeader
@@ -1698,7 +1725,7 @@
         nominal = (.declaration) owner
         name = (.name) nominal
         baseExports = case (.representation) nominal of
-          IdRepresentation prefix
+          IdRepresentation prefix _
             | Just _ <- idDomainContractFor languageContract prefix ->
                 [name, "parse" <> name, "mk" <> name, nominalTextName nominal]
           _ -> [name <> " (..)", nominalTextName nominal]
@@ -1722,7 +1749,7 @@
         <> [ "import Keiki.ProjectionDomain (" <> T.intercalate ", " projectionDomainImports <> ")"
            | not (null projectionDomainImports)
            ]
-        <> ["import Keiro.Codec.IdDomain (idDomainTextPattern, typeIdV7Domain)" | hasExactEnforcedId]
+        <> ["import Keiro.Codec.IdDomain (" <> T.intercalate ", " equalityIdDomainImports <> ")" | hasExactEnforcedId]
       where
         coreImports =
           ["FieldProjection (..)", "FieldWitness"]
@@ -1745,16 +1772,16 @@
     emitOwner owner = emitGeneratedNominal languageContract ((.equalityUsed) owner) ((.declaration) owner)
     exactOwner nominal = case (.representation) nominal of
       EnumRepresentation {} -> True
-      IdRepresentation prefix -> isJust (idDomainContractFor languageContract prefix)
+      IdRepresentation prefix _ -> isJust (idDomainContractFor languageContract prefix)
       ScalarRepresentation {} -> False
     nominalUsesDeriveAnyClass nominal = case (.representation) nominal of
-      IdRepresentation prefix -> not (isJust (idDomainContractFor languageContract prefix))
+      IdRepresentation prefix _ -> not (isJust (idDomainContractFor languageContract prefix))
       EnumRepresentation {} -> True
       ScalarRepresentation {} -> False
 
 emitGeneratedNominal :: EffectiveLanguageContract -> Bool -> ResolvedNominalType -> Text
 emitGeneratedNominal languageContract equalityUsed nominal = case (.representation) nominal of
-  IdRepresentation prefix
+  IdRepresentation prefix _
     | Just _ <- idDomainContractFor languageContract prefix ->
         nl equalitySection
   IdRepresentation {} ->
@@ -1811,12 +1838,12 @@
     witnessName = nominalEqualityWitnessName nominal
     equalityIdentity = fromMaybe (error "generated nominal equality contract missing") (nominalEqualityIdentityForService languageContract nominal)
     (exactInstance, witnessConstructor) = case (.representation) nominal of
-      IdRepresentation prefix -> case idDomainContractFor languageContract prefix of
+      IdRepresentation prefix admission -> case idDomainContractFor languageContract prefix of
         Nothing -> ([], "fieldWitness")
         Just _ ->
           ( [ "",
               patternName <> " :: TextPattern",
-              patternName <> " = either (error . show) id (idDomainTextPattern (typeIdV7Domain " <> tshow prefix <> "))",
+              patternName <> " = either (error . show) id (idDomainTextPattern (" <> idDomainContractExpression admission prefix <> "))",
               "",
               "instance ExactFieldProjection " <> tagName <> " where",
               "  fieldProjectionDomain _ = textProjectionDomain " <> patternName,
@@ -1850,7 +1877,7 @@
       "import Data.Text qualified as T",
       "import GHC.Generics (Generic)",
       "import Keiki.Shape (CanonicalTypeName)",
-      "import Keiro.Codec.IdDomain (typeIdV7Domain, validateIdDomainText)",
+      "import Keiro.Codec.IdDomain (" <> T.intercalate ", " internalIdDomainImports <> ")",
       "",
       sectionsOf [map emitInternal nominals]
     ]
@@ -1876,7 +1903,7 @@
           "  parseJSON = withText " <> tshow name <> " (either (fail . T.unpack) pure . parse" <> name <> ")",
           "",
           "parse" <> name <> " :: Text -> Either Text " <> name,
-          "parse" <> name <> " input = case validateIdDomainText (typeIdV7Domain " <> tshow (idDomainPrefix contract) <> ") input of",
+          "parse" <> name <> " input = case validateIdDomainText (" <> idDomainContractExpression (idDomainAdmission contract) (idDomainPrefix contract) <> ") input of",
           "  Left reason -> Left (T.pack (show reason))",
           "  Right () -> Right (" <> name <> " input)",
           "",
@@ -1892,6 +1919,7 @@
       where
         name = (.name) nominal
         textName = nominalTextName nominal
+    internalIdDomainImports = idDomainConstructorImports (map (idDomainAdmission . snd) nominals) <> ["validateIdDomainText"]
 
 nominalEqualityTagName :: ResolvedNominalType -> Text
 nominalEqualityTagName nominal = (.name) nominal <> "EqualityProjection"
@@ -1907,6 +1935,30 @@
 nominalTextName :: ResolvedNominalType -> Text
 nominalTextName = (<> "Text") . lowerFirst . (.name)
 
+idDomainContractExpression :: IdAdmission -> Text -> Text
+idDomainContractExpression admission prefix =
+  idDomainConstructorName admission <> " " <> tshow prefix
+
+idDomainConstructorName :: IdAdmission -> Text
+idDomainConstructorName TypeIdV7 = "typeIdV7Domain"
+idDomainConstructorName TypeIdV5OrV7 = "typeIdV5OrV7Domain"
+
+idDomainConstructorImports :: [IdAdmission] -> [Text]
+idDomainConstructorImports admissions =
+  ["typeIdV7Domain" | TypeIdV7 `elem` admissions]
+    <> ["typeIdV5OrV7Domain" | TypeIdV5OrV7 `elem` admissions]
+
+idDomainParserImports :: [IdAdmission] -> [Text]
+idDomainParserImports admissions =
+  ["parseKindIdV7Text" | TypeIdV7 `elem` admissions]
+    <> if TypeIdV5OrV7 `elem` admissions then ["parseKindIdText", "typeIdV5OrV7Domain"] else []
+
+parseKindIdTextCall :: IdAdmission -> Text -> Text -> Text
+parseKindIdTextCall TypeIdV7 prefix input =
+  "parseKindIdV7Text @" <> tshow prefix <> " " <> input
+parseKindIdTextCall TypeIdV5OrV7 prefix input =
+  "parseKindIdText @" <> tshow prefix <> " (typeIdV5OrV7Domain " <> tshow prefix <> ") " <> input
+
 -- | Explicit type/constructor imports for exactly the generated declarations a
 -- generated aggregate module uses. Keeping an import list avoids making every
 -- aggregate depend on every service declaration merely because they share the
@@ -1943,7 +1995,7 @@
   where
     parsingNames = map (.name) (stableNominals parsing)
     importsFor nominal = case (.representation) nominal of
-      IdRepresentation prefix
+      IdRepresentation prefix _
         | Just _ <- idDomainContractFor (checkedLanguageContract service) prefix ->
             [(.name) nominal]
               <> ["parse" <> (.name) nominal | (.name) nominal `elem` parsingNames]
@@ -1973,13 +2025,13 @@
        ]
   where
     publicImports nominal = case (.representation) nominal of
-      IdRepresentation prefix
+      IdRepresentation prefix _
         | Just _ <- idDomainContractFor (checkedLanguageContract service) prefix -> [nominalTextName nominal]
       _ -> [(.name) nominal <> " (..)", nominalTextName nominal]
     enforcingIds =
       [ nominal
       | nominal <- stableNominals nominals,
-        IdRepresentation prefix <- [(.representation) nominal],
+        IdRepresentation prefix _ <- [(.representation) nominal],
         Just _ <- [idDomainContractFor (checkedLanguageContract service) prefix]
       ]
 
@@ -2090,7 +2142,7 @@
           "Keiro.Codec.Nominal (" <> T.intercalate ", " nominalCodecImports <> ")"
         ]
           <> ["Data.KindID qualified as KindID" | any hasId nominals]
-          <> ["Keiro.Codec.IdDomain (idDomainTextPattern, typeIdV7Domain, validateIdDomainText)" | any hasEnforcedId nominals]
+          <> ["Keiro.Codec.IdDomain (" <> T.intercalate ", " enforcedIdDomainImports <> ")" | any hasEnforcedId nominals]
           <> ["Data.List.NonEmpty (NonEmpty (..))" | any hasEnum nominals || any hasUnenforcedId nominals]
           <> ["Data.Text (Text)" | any usesText nominals]
           <> ["Data.Time (UTCTime)" | any (hasScalar NominalTime) nominals]
@@ -2123,11 +2175,20 @@
     hasId nominal = case (.representation) nominal of IdRepresentation {} -> True; _ -> False
     hasEnum nominal = case (.representation) nominal of EnumRepresentation {} -> True; _ -> False
     hasEnforcedId nominal = case (.representation) nominal of
-      IdRepresentation prefix -> isJust (idDomainContractFor languageContract prefix)
+      IdRepresentation prefix _ -> isJust (idDomainContractFor languageContract prefix)
       _ -> False
     hasUnenforcedId nominal = case (.representation) nominal of
-      IdRepresentation prefix -> isNothing (idDomainContractFor languageContract prefix)
+      IdRepresentation prefix _ -> isNothing (idDomainContractFor languageContract prefix)
       _ -> False
+    enforcedIdDomainImports =
+      ["idDomainTextPattern"]
+        <> idDomainConstructorImports
+          [ admission
+          | nominal <- nominals,
+            IdRepresentation prefix admission <- [(.representation) nominal],
+            isJust (idDomainContractFor languageContract prefix)
+          ]
+        <> ["validateIdDomainText"]
     hasExactDomain nominal = case (.representation) nominal of ScalarRepresentation {} -> False; _ -> True
     usesText nominal = case (.representation) nominal of ScalarRepresentation NominalText -> True; IdRepresentation {} -> True; EnumRepresentation {} -> True; _ -> False
     importPlan =
@@ -2165,7 +2226,7 @@
       GeneratedNominal -> ""
       ConsumerNominal binding -> case (.representation) nominal of
         ScalarRepresentation {} -> emitScalarProjection nominal binding
-        IdRepresentation prefix -> emitConsumerIdProjection nominal binding prefix
+        IdRepresentation prefix admission -> emitConsumerIdProjection nominal binding prefix admission
         EnumRepresentation constructors -> emitConsumerEnumProjection nominal binding constructors
     emitScalarProjection nominal binding =
       nl
@@ -2185,7 +2246,7 @@
         name = (.name) nominal
         tagName = name <> "NominalProjection"
         witnessName = lowerFirst name <> "Witness"
-    emitConsumerIdProjection nominal binding prefix =
+    emitConsumerIdProjection nominal binding prefix admission =
       nl
         ( patternLines
             <> [ "",
@@ -2224,7 +2285,7 @@
         patternLines
           | enforced =
               [ patternName <> " :: TextPattern",
-                patternName <> " = either (error . show) id (idDomainTextPattern (typeIdV7Domain " <> tshow prefix <> "))"
+                patternName <> " = either (error . show) id (idDomainTextPattern (" <> idDomainContractExpression admission prefix <> "))"
               ]
           | otherwise =
               [ patternName <> " :: TextPattern",
@@ -2236,7 +2297,7 @@
                 "  pure (textConcat (prefix :| [leading, suffix]))"
               ]
         validationGuard =
-          [ "    | Left _ <- validateIdDomainText (typeIdV7Domain " <> tshow prefix <> ") value = Nothing"
+          [ "    | Left _ <- validateIdDomainText (" <> idDomainContractExpression admission prefix <> ") value = Nothing"
           | enforced
           ]
     emitConsumerEnumProjection nominal binding constructors =
@@ -2289,7 +2350,7 @@
   nl $
     languagePragmas
       <> [ generatedBanner,
-           "module " <> moduleName <> " (" <> shapeType <> " (..)) where",
+           "module " <> moduleName <> " (" <> shapeExport <> ") where",
            ""
          ]
       <> map ("import " <>) imports
@@ -2307,7 +2368,10 @@
           <> ["Data.Map.Strict (Map)" | ReqMap `elem` requirements]
           <> ["Data.Text (Text)" | ReqText `elem` requirements]
           <> ["Data.Time (UTCTime)" | ReqTime `elem` requirements]
-          <> ["GHC.Generics (Generic)"]
+          <> ["Data.Time.Calendar (Day)" | ReqDay `elem` requirements]
+          <> ["Data.Set (Set)" | ReqSet `elem` requirements]
+          <> ["Data.ByteString (ByteString)" | ReqByteString `elem` requirements]
+          <> ["GHC.Generics (Generic)" | shapeNeedsGeneric]
           <> ["Numeric.Natural (Natural)" | ReqNatural `elem` requirements]
     shapeDeclaration =
       foldMappedShape
@@ -2333,9 +2397,19 @@
                   firstArm : rest ->
                     ["data " <> shapeType <> " = " <> renderArm firstArm]
                       <> ["  | " <> renderArm arm | arm <- rest]
-                      <> ["  deriving stock (Eq, Generic, Show)"]
+                      <> ["  deriving stock (Eq, Generic, Show)"],
+            onBare = \expression -> "type " <> shapeType <> " = " <> renderShapeType importPlan ctx graph expression,
+            onRefined = const ("type " <> shapeType <> " = ByteString")
           }
         shape
+    shapeNeedsGeneric = case shape of
+      RBare {} -> False
+      RRefined {} -> False
+      _ -> True
+    shapeExport = case shape of
+      RBare {} -> shapeType
+      RRefined {} -> shapeType
+      _ -> shapeType <> " (..)"
     renderArm arm = (.ctor) arm <> maybe "" ((" !" <>) . renderShapeType importPlan ctx graph) ((.payload) arm)
     importPlan =
       planImportsOrDie
@@ -2348,6 +2422,9 @@
   | ReqMap
   | ReqText
   | ReqTime
+  | ReqDay
+  | ReqSet
+  | ReqByteString
   | ReqNatural
   | ReqReference !HaskellReference
   deriving stock (Eq, Ord, Show)
@@ -2358,7 +2435,9 @@
     MappedShapeAlgebra
       { onRecord = \_ _ fields -> concatMap (exprRequirements ctx graph . (.valueType)) fields,
         onEnum = const [],
-        onUnion = \_ arms -> concatMap (maybe [] (exprRequirements ctx graph) . (.payload)) arms
+        onUnion = \_ arms -> concatMap (maybe [] (exprRequirements ctx graph) . (.payload)) arms,
+        onBare = exprRequirements ctx graph,
+        onRefined = const [ReqByteString]
       }
 
 exprRequirements :: Context -> TypeGraph -> ResolvedTypeExpr -> [ShapeRequirement]
@@ -2371,6 +2450,8 @@
         onBool = [],
         onNatural = [ReqNatural],
         onTime = [ReqTime],
+        onDay = [ReqDay],
+        onTextSet = [ReqSet, ReqText],
         onJson = [ReqJson],
         onOptional = id,
         onList = id,
@@ -2402,6 +2483,8 @@
           onBool = atomicShapeType "Bool",
           onNatural = atomicShapeType "Natural",
           onTime = atomicShapeType "UTCTime",
+          onDay = atomicShapeType "Day",
+          onTextSet = applicationShapeType "Set Text",
           onJson = atomicShapeType "Value",
           onOptional = applicationShapeType . ("Maybe " <>) . renderStrictOrApplicationArgument,
           onList = atomicShapeType . ("[" <>) . (<> "]") . (.text),
@@ -2435,7 +2518,7 @@
   ResolvedNominalType
     { name = (.name) leaf,
       representation = case (.kind) leaf of
-        NominalIdLeaf prefix -> IdRepresentation prefix
+        NominalIdLeaf prefix admission -> IdRepresentation prefix admission
         NominalEnumLeaf constructors -> EnumRepresentation constructors
         NominalScalarLeaf representation -> ScalarRepresentation representation,
       ownership = case (.ownership) leaf of
@@ -2497,6 +2580,8 @@
   RRecord _ _ fields -> concatMap (walkField [] []) fields
   REnum {} -> []
   RUnion {} -> []
+  RBare {} -> []
+  RRefined {} -> []
   where
     walkField keys selectors field
       | (.presence) field /= PRequired = []
@@ -2554,6 +2639,8 @@
   RInteger -> primitive "Integer"
   RBool -> primitive "Bool"
   RTime -> primitive "UTCTime"
+  RDay -> Nothing
+  RTextSet -> Nothing
   RNatural -> primitive "Natural"
   RJson -> Nothing
   ROptional {} -> Nothing
@@ -2678,7 +2765,7 @@
         <> ["import Data.List.NonEmpty (NonEmpty (..))" | hasExactEnum]
         <> ["import Data.List.NonEmpty qualified as NonEmpty" | hasExact]
         <> ["import Data.KindID qualified as KindID" | any (maybe False projectionLeafIsConsumerId . (.terminalNominal)) specs]
-        <> [ "import Keiro.Codec.IdDomain (idDomainTextPattern, parseKindIdV7Text, typeIdV7Domain)"
+        <> [ "import Keiro.Codec.IdDomain (" <> T.intercalate ", " structuralProjectionIdImports <> ")"
            | hasExactId
            ]
         <> [ "import Keiro.Codec.Nominal (" <> T.intercalate ", " nominalCodecImports <> ")"
@@ -2704,6 +2791,21 @@
     projectionDomainImports =
       ["finiteProjectionDomain" | hasExactEnum]
         <> if hasExactId then ["TextPattern", "textProjectionDomain"] else []
+    structuralProjectionIdImports =
+      nub $
+        ["idDomainTextPattern"]
+          <> idDomainParserImports exactConsumerIdAdmissions
+          <> idDomainConstructorImports exactIdAdmissions
+    exactIdAdmissions =
+      [ admission
+      | spec <- exactSpecs,
+        Just NominalLeaf {kind = NominalIdLeaf _ admission} <- [(.terminalNominal) spec]
+      ]
+    exactConsumerIdAdmissions =
+      [ admission
+      | spec <- exactSpecs,
+        Just NominalLeaf {kind = NominalIdLeaf _ admission, ownership = ConsumerLeaf {}} <- [(.terminalNominal) spec]
+      ]
     fieldScopeImports =
       [ "import " <> shapeModuleName <> " (" <> lastSegment shapeModuleName <> "Shape(" <> T.intercalate ", " (Set.toAscList selectors) <> "))"
       | (shapeModuleName, selectors) <- Map.toAscList selectorsByModule
@@ -2764,9 +2866,9 @@
       | otherwise = "fieldWitness"
     isExactProjection spec = maybe False projectionLeafHasExactDomain ((.terminalNominal) spec)
     renderProjectionDomain spec = case (.terminalNominal) spec of
-      Just NominalLeaf {kind = NominalIdLeaf prefix} ->
+      Just NominalLeaf {kind = NominalIdLeaf prefix admission} ->
         [ projectionPatternName spec <> " :: TextPattern",
-          projectionPatternName spec <> " = either (error . show) id (idDomainTextPattern (typeIdV7Domain " <> tshow prefix <> "))",
+          projectionPatternName spec <> " = either (error . show) id (idDomainTextPattern (" <> idDomainContractExpression admission prefix <> "))",
           ""
         ]
       _ -> []
@@ -2890,8 +2992,8 @@
   (NominalIdLeaf {}, GeneratedLeaf) ->
     [ "fieldValue <- either (const Nothing) Just (" <> rendered (generatedValueReference ("parse" <> (.name) leaf)) <> " value)"
     ]
-  (NominalIdLeaf prefix, ConsumerLeaf binding) ->
-    [ "representation <- either (const Nothing) Just (parseKindIdV7Text @" <> tshow prefix <> " value)",
+  (NominalIdLeaf prefix admission, ConsumerLeaf binding) ->
+    [ "representation <- either (const Nothing) Just (" <> parseKindIdTextCall admission prefix "value" <> ")",
       "let fieldValue = nominalFromRepresentation " <> rendered (qualifiedValueReference ((.binding) binding)) <> " representation"
     ]
   (NominalEnumLeaf constructors, GeneratedLeaf) ->
@@ -4388,6 +4490,9 @@
     usesOptionalValue = any typeUsesOptional allExpressions
     usesNatural = any typeUsesNatural rootExpressions
     usesTime = any typeUsesTime rootExpressions
+    usesDay = any typeUsesDay allExpressions
+    usesTextSet = any typeUsesTextSet allExpressions
+    usesBase16Bytes = any (\(_, shape) -> shape == RRefined Base16BytesV1) structuralDeclarations
     usesParseJson = any (typeUsesParseJson graph) allExpressions
     usesToJson = any (typeUsesToJson graph) allExpressions
     usesValueConstructors = usesOptionalValue || not (Set.null keyedMapNames) || any isEnumShape (map snd structuralDeclarations)
@@ -4406,13 +4511,19 @@
         <> ["import Data.Aeson.Key qualified as Key" | usesKeyModule]
         <> ["import Data.Aeson.KeyMap qualified as KeyMap" | usesKeyMap]
         <> ["import Data.Aeson.Types (" <> T.intercalate ", " aesonTypesImports <> ")"]
-        <> (if usesMap then ["import Data.Map.Strict (Map)", "import Data.Map.Strict qualified as Map"] else [])
+        <> ["import Data.Map.Strict (Map)" | any typeUsesPlainMap allExpressions]
+        <> ["import Data.Map.Strict qualified as Map" | usesMap]
+        <> ["import Data.Set (Set)" | any typeUsesTextSet rootExpressions]
         <> ["import Numeric.Natural (Natural)" | usesNatural]
         <> ["import Data.Time (UTCTime)" | usesTime]
+        <> ["import Data.Time.Calendar (Day)" | any typeUsesDay rootExpressions]
         <> [ "import Data.Text (Text)",
              "import qualified Data.Text as T"
            ]
         <> ["import Keiro.Codec.Structural (bindingFromShape, bindingToShape)" | hasStructural]
+        <> ["import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)" | usesDay]
+        <> ["import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)" | usesTextSet]
+        <> ["import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)" | usesBase16Bytes]
         <> [nominalLeafCodecImport ctx selectedNominals | not (Set.null selectedNominals)]
         <> [nominalLeafKeyCodecImport ctx keyedMapNames | not (Set.null keyedMapNames)]
         <> map ("import " <>) opaqueInstanceImports
@@ -4520,19 +4631,25 @@
 queueLead _ keyValue = "    , " <> keyValue
 
 typeUsesNatural :: ResolvedTypeExpr -> Bool
-typeUsesNatural = foldTypeExpr (TypeExprAlgebra False False False False True False False id id id (\_ -> id) (const False) (const False))
+typeUsesNatural = foldTypeExpr (TypeExprAlgebra False False False False True False False False False id id id (\_ -> id) (const False) (const False))
 
 typeUsesTime :: ResolvedTypeExpr -> Bool
-typeUsesTime = foldTypeExpr (TypeExprAlgebra False False False False False True False id id id (\_ -> id) (const False) (const False))
+typeUsesTime = foldTypeExpr (TypeExprAlgebra False False False False False True False False False id id id (\_ -> id) (const False) (const False))
 
+typeUsesDay :: ResolvedTypeExpr -> Bool
+typeUsesDay = foldTypeExpr (TypeExprAlgebra False False False False False False True False False id id id (\_ -> id) (const False) (const False))
+
+typeUsesTextSet :: ResolvedTypeExpr -> Bool
+typeUsesTextSet = foldTypeExpr (TypeExprAlgebra False False False False False False False True False id id id (\_ -> id) (const False) (const False))
+
 typeUsesText :: ResolvedTypeExpr -> Bool
-typeUsesText = foldTypeExpr (TypeExprAlgebra True False False False False False False id id (const True) (\_ -> id) (const False) (const False))
+typeUsesText = foldTypeExpr (TypeExprAlgebra True False False False False False False True False id id (const True) (\_ -> id) (const False) (const False))
 
 typeUsesJson :: ResolvedTypeExpr -> Bool
-typeUsesJson = foldTypeExpr (TypeExprAlgebra False False False False False False True id id id (\_ -> id) (const False) (const False))
+typeUsesJson = foldTypeExpr (TypeExprAlgebra False False False False False False False False True id id id (\_ -> id) (const False) (const False))
 
 typeUsesParserAnnotation :: ResolvedTypeExpr -> Bool
-typeUsesParserAnnotation = foldTypeExpr (TypeExprAlgebra False False False False False False False id (const True) (const True) (\_ _ -> True) (const False) (const False))
+typeUsesParserAnnotation = foldTypeExpr (TypeExprAlgebra False False False False False False False False False id (const True) (const True) (\_ _ -> True) (const False) (const False))
 
 typeUsesParseJson :: TypeGraph -> ResolvedTypeExpr -> Bool
 typeUsesParseJson graph =
@@ -4544,6 +4661,8 @@
         onBool = True,
         onNatural = True,
         onTime = True,
+        onDay = False,
+        onTextSet = False,
         onJson = False,
         onOptional = id,
         onList = const True,
@@ -5480,13 +5599,15 @@
           | expression <- expressions,
             leaf@NominalLeaf {ownership = GeneratedLeaf} <- directNominalLeaves expression
           ]
-    reservedNames = Set.fromList [queryInputType, queryResultType, "Map", "Natural", "Text", "UTCTime", "Value"]
+    reservedNames = Set.fromList [queryInputType, queryResultType, "Day", "Map", "Natural", "Text", "UTCTime", "Value"]
     importPlan = planImportsOrDie queryContractModule reservedNames references
     imports =
       ["import Data.Aeson (Value)" | any typeUsesJson expressions]
         <> ["import Data.Map.Strict (Map)" | any typeUsesMap expressions]
+        <> ["import Data.Set (Set)" | any typeUsesTextSet expressions]
         <> ["import Data.Text (Text)" | any typeUsesText expressions]
         <> ["import Data.Time (UTCTime)" | any typeUsesTime expressions]
+        <> ["import Data.Time.Calendar (Day)" | any typeUsesDay expressions]
         <> ["import Numeric.Natural (Natural)" | any typeUsesNatural expressions]
         <> T.lines (renderPlannedImports importPlan)
     resolve position location expression =
@@ -5510,6 +5631,8 @@
             onBool = [],
             onNatural = [],
             onTime = [],
+            onDay = [],
+            onTextSet = [],
             onJson = [],
             onOptional = id,
             onList = id,
@@ -6160,14 +6283,23 @@
 -- dangerous @defaultTimerWorkerOptions@ (@Nothing@) default.
 scaffoldProcess :: Context -> ProcessNode -> [ScaffoldModule]
 scaffoldProcess ctx p = case (.body) p of
-  ReactionProcessBody reaction -> scaffoldReactionProcess ctx p reaction
+  ReactionProcessBody reaction -> scaffoldReactionProcess ctx Nothing p reaction
   LegacyProcessBody {} -> scaffoldLegacyProcess ctx p
 
-scaffoldReactionProcess :: Context -> ProcessNode -> ReactionBody -> [ScaffoldModule]
-scaffoldReactionProcess ctx process reaction =
+scaffoldProcessForService :: Context -> CheckedService -> ProcessNode -> [ScaffoldModule]
+scaffoldProcessForService ctx service p = case (.body) p of
+  ReactionProcessBody reaction -> scaffoldReactionProcess ctx (Just graph) p reaction
+  LegacyProcessBody {} -> scaffoldLegacyProcess ctx p
+  where
+    graph = case checkedTypeGraph service of
+      Left errors -> error ("checked process type graph failed: " <> show errors)
+      Right value -> value
+
+scaffoldReactionProcess :: Context -> Maybe TypeGraph -> ProcessNode -> ReactionBody -> [ScaffoldModule]
+scaffoldReactionProcess ctx typeGraph process reaction =
   [ ScaffoldModule
       { path = modulePath inputPrefix "Input",
-        text = emitReactionInput ctx inputPrefix process reaction,
+        text = emitReactionInput ctx typeGraph inputPrefix process reaction,
         kind = Generated,
         origin = nodeOrigin "process input" ((.id) process) ((.loc) process)
       },
@@ -6189,8 +6321,8 @@
     holePrefix = holePrefixFor ctx ((.id) process)
     modulePath prefix leaf = T.unpack (T.replace "." "/" prefix <> "/" <> leaf <> ".hs")
 
-emitReactionInput :: Context -> Text -> ProcessNode -> ReactionBody -> Text
-emitReactionInput ctx genPrefix process reaction =
+emitReactionInput :: Context -> Maybe TypeGraph -> Text -> ProcessNode -> ReactionBody -> Text
+emitReactionInput ctx maybeGraph genPrefix process reaction =
   nl $
     renderGeneratedLanguagePragmas [ExtDeriveAnyClass, ExtDuplicateRecordFields]
       <> [ generatedBanner,
@@ -6204,6 +6336,7 @@
          ]
       <> ["import Numeric.Natural (Natural)" | usesType [Just "Natural"]]
       <> ["import " <> contextGeneratedPrefix ctx <> ".Nominals qualified as N" | usesNominal]
+      <> [renderPlannedImports mappedImportPlan | not (Set.null mappedReferences)]
       <> [ "",
            "data " <> inputType
          ]
@@ -6213,12 +6346,33 @@
     inputType = pascal ((.id) process) <> "Input"
     inputFields = concatMap (.fields) (NE.toList ((.inputs) reaction))
     usesType candidates = any ((`elem` candidates) . (.valueType)) inputFields
-    usesNominal = any (\field -> maybe False (`notElem` ["Text", "Int", "Integer", "Bool", "Natural", "Time"]) ((.valueType) field)) inputFields
     renderCtor index input =
       [ (if index == 0 then "  = " else "  | ") <> (.name) input,
-        "      { " <> T.intercalate "\n      , " [(.name) field <> " :: !" <> renderReactionFieldType field | field <- (.fields) input],
+        "      { " <> T.intercalate "\n      , " [(.name) field <> " :: !" <> renderFieldType field | field <- (.fields) input],
         "      }"
       ]
+    mappedDeclaration name = maybe Nothing (Map.lookup (MappedKey name) . (.declarations)) maybeGraph
+    mappedSourceReference declaration = case declaration of
+      ResolvedStructural value _ -> haskellTypeReference ((.haskell) value)
+      ResolvedOpaque value -> haskellTypeReference ((.haskell) value)
+    mappedReferences =
+      Set.fromList
+        [ mappedSourceReference declaration
+        | field <- inputFields,
+          Just name <- [(.valueType) field],
+          Just declaration <- [mappedDeclaration name]
+        ]
+    mappedImportPlan = planImportsOrDie (genPrefix <> ".Input") (Set.singleton inputType) mappedReferences
+    renderFieldType field = case (.valueType) field >>= mappedDeclaration of
+      Just declaration -> renderReferenceOrDie mappedImportPlan (mappedSourceReference declaration)
+      Nothing -> renderReactionFieldType field
+    usesNominal =
+      any
+        ( \field -> case (.valueType) field of
+            Just name -> name `notElem` ["Text", "Int", "Integer", "Bool", "Natural", "Time"] && isNothing (mappedDeclaration name)
+            Nothing -> False
+        )
+        inputFields
 
 renderReactionFieldType :: Field -> Text
 renderReactionFieldType field = renderReactionTypeName ((.valueType) field)
@@ -7030,7 +7184,7 @@
   where
     nominals = stableNominals ((.generatedNominals) aggregate)
     importsFor nominal = case (.representation) nominal of
-      IdRepresentation prefix
+      IdRepresentation prefix _
         | Just _ <- idDomainContractFor ((.languageContract) aggregate) prefix ->
             (.name) nominal
               : ["parse" <> (.name) nominal | needsParser nominal]
@@ -7123,15 +7277,18 @@
            "import Data.List.NonEmpty (NonEmpty (..))",
            "import Data.List.NonEmpty qualified as NonEmpty"
          ]
-      ++ ( if codecUsesMap a
-             then ["import Data.Map.Strict (Map)", "import Data.Map.Strict qualified as Map"]
-             else []
-         )
+      ++ ["import Data.Map.Strict (Map)" | codecUsesPlainMap a]
+      ++ ["import Data.Map.Strict qualified as Map" | codecUsesMap a]
       ++ [ "import Data.Text (Text)",
            "import qualified Data.Text as T"
          ]
       ++ ["import Data.KindID qualified as KindID" | hasConsumerNominalIdCodec a]
-      ++ ["import Keiro.Codec.IdDomain (typeIdV7Domain, validateIdDomainText)" | hasEnforcedConsumerNominalIdCodec a]
+      ++ [ "import Keiro.Codec.IdDomain (" <> T.intercalate ", " (idDomainConstructorImports (codecEnforcedConsumerIdAdmissions a) <> ["validateIdDomainText"]) <> ")"
+         | hasEnforcedConsumerNominalIdCodec a
+         ]
+      ++ ["import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)" | codecUsesDay a]
+      ++ ["import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)" | codecUsesTextSet a]
+      ++ ["import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)" | codecUsesBase16Bytes a]
       ++ codecNominalRuntimeImports a
       ++ ["import Keiro.Codec.Structural (bindingFromShape, bindingToShape)" | hasStructuralMappedCodec a]
       ++ [ "import Keiro.Codec (Codec (..), EventType (..))",
@@ -7241,12 +7398,19 @@
 
 codecUsesExplicitParseField :: Agg -> Bool
 codecUsesExplicitParseField aggregate =
-  codecUsesWithText aggregate || any structuralUsesExplicitParseField (codecMappedDeclarations aggregate)
+  codecUsesWithText aggregate
+    || any structuralUsesExplicitParseField (codecMappedDeclarations aggregate)
+    || any eventFieldUsesExplicitParseField (concatMap (.fields) ((.events) aggregate))
   where
+    eventFieldUsesExplicitParseField (_, resolvedType) = case fieldCat aggregate resolvedType of
+      MappedStructuralCat {} -> True
+      _ -> False
     structuralUsesExplicitParseField (ResolvedStructural _ shape) = case shape of
       RRecord _ _ fields -> not (null fields)
       REnum {} -> False
       RUnion {} -> True
+      RBare {} -> False
+      RRefined {} -> False
     structuralUsesExplicitParseField ResolvedOpaque {} = False
 
 codecUsesWithText :: Agg -> Bool
@@ -7262,6 +7426,8 @@
       REnum {} -> True
       RUnion {} -> True
       RRecord {} -> False
+      RBare {} -> False
+      RRefined {} -> False
     mappedUsesWithText ResolvedOpaque {} = False
 
 codecUsesDotColon :: Agg -> Bool
@@ -7301,6 +7467,12 @@
     declarationUsesMap (ResolvedStructural _ shape) = any typeUsesMap (shapeTypeExpressions shape)
     declarationUsesMap ResolvedOpaque {} = False
 
+codecUsesPlainMap :: Agg -> Bool
+codecUsesPlainMap = any declarationUsesPlainMap . codecMappedDeclarations
+  where
+    declarationUsesPlainMap (ResolvedStructural _ shape) = any typeUsesPlainMap (shapeTypeExpressions shape)
+    declarationUsesPlainMap ResolvedOpaque {} = False
+
 codecUsesLocatedContainers :: Agg -> Bool
 codecUsesLocatedContainers = any declarationUsesLocatedContainer . codecMappedDeclarations
   where
@@ -7310,6 +7482,25 @@
 codecUsesParseJSON :: Agg -> Bool
 codecUsesParseJSON aggregate = any (declarationUsesAesonConversion aggregate) (codecMappedDeclarations aggregate)
 
+codecUsesDay :: Agg -> Bool
+codecUsesDay = any declarationUsesDay . codecMappedDeclarations
+  where
+    declarationUsesDay (ResolvedStructural _ shape) = any typeUsesDay (shapeTypeExpressions shape)
+    declarationUsesDay ResolvedOpaque {} = False
+
+codecUsesTextSet :: Agg -> Bool
+codecUsesTextSet = any declarationUsesTextSet . codecMappedDeclarations
+  where
+    declarationUsesTextSet (ResolvedStructural _ shape) = any typeUsesTextSet (shapeTypeExpressions shape)
+    declarationUsesTextSet ResolvedOpaque {} = False
+
+codecUsesBase16Bytes :: Agg -> Bool
+codecUsesBase16Bytes = any declarationUsesBase16Bytes . codecMappedDeclarations
+  where
+    declarationUsesBase16Bytes (ResolvedStructural _ (RRefined Base16BytesV1)) = True
+    declarationUsesBase16Bytes ResolvedStructural {} = False
+    declarationUsesBase16Bytes ResolvedOpaque {} = False
+
 codecUsesToJSON :: Agg -> Bool
 codecUsesToJSON aggregate =
   any directOpaqueField (concatMap (.fields) ((.events) aggregate))
@@ -7334,6 +7525,8 @@
   RRecord _ _ fields -> map (.valueType) fields
   REnum {} -> []
   RUnion _ arms -> mapMaybe (.payload) arms
+  RBare expression -> [expression]
+  RRefined {} -> []
 
 typeUsesMap :: ResolvedTypeExpr -> Bool
 typeUsesMap =
@@ -7345,6 +7538,8 @@
         onBool = False,
         onNatural = False,
         onTime = False,
+        onDay = False,
+        onTextSet = False,
         onJson = False,
         onOptional = id,
         onList = id,
@@ -7354,6 +7549,30 @@
         onNominal = const False
       }
 
+-- A keyed map is encoded as an Aeson object and only needs qualified Map
+-- operations. Plain text-keyed maps additionally mention @Map@ in generated
+-- parser annotations.
+typeUsesPlainMap :: ResolvedTypeExpr -> Bool
+typeUsesPlainMap =
+  foldTypeExpr
+    TypeExprAlgebra
+      { onText = False,
+        onInt = False,
+        onInteger = False,
+        onBool = False,
+        onNatural = False,
+        onTime = False,
+        onDay = False,
+        onTextSet = False,
+        onJson = False,
+        onOptional = id,
+        onList = id,
+        onMap = const True,
+        onKeyedMap = \_ value -> value,
+        onRef = const False,
+        onNominal = const False
+      }
+
 typeUsesKeyedMap :: ResolvedTypeExpr -> Bool
 typeUsesKeyedMap = not . Set.null . keyedMapNominalNames
 
@@ -7367,6 +7586,8 @@
         onBool = Set.empty,
         onNatural = Set.empty,
         onTime = Set.empty,
+        onDay = Set.empty,
+        onTextSet = Set.empty,
         onJson = Set.empty,
         onOptional = id,
         onList = id,
@@ -7386,6 +7607,8 @@
         onBool = False,
         onNatural = False,
         onTime = False,
+        onDay = False,
+        onTextSet = False,
         onJson = False,
         onOptional = id,
         onList = const True,
@@ -7405,6 +7628,8 @@
         onBool = False,
         onNatural = False,
         onTime = False,
+        onDay = False,
+        onTextSet = False,
         onJson = False,
         onOptional = const True,
         onList = id,
@@ -7424,6 +7649,8 @@
         onBool = True,
         onNatural = True,
         onTime = True,
+        onDay = False,
+        onTextSet = False,
         onJson = False,
         onOptional = id,
         onList = const True,
@@ -7438,12 +7665,20 @@
 codecUsesOptionalFieldHelper :: Agg -> Bool
 codecUsesOptionalFieldHelper aggregate =
   any structuralHasOptionalField (codecMappedDeclarations aggregate)
+    || any (mappedEventFieldAcceptsMissing aggregate . snd) (concatMap (.fields) ((.events) aggregate))
   where
     structuralHasOptionalField (ResolvedStructural _ (RRecord _ _ fields)) =
       any ((== POptional) . (.presence)) fields
     structuralHasOptionalField (ResolvedStructural _ _) = False
     structuralHasOptionalField ResolvedOpaque {} = False
 
+mappedEventFieldAcceptsMissing :: Agg -> ResolvedAggregateType -> Bool
+mappedEventFieldAcceptsMissing aggregate = \case
+  AggregateMapped key -> case (.typeGraph) aggregate >>= \graph -> Map.lookup key ((.declarations) graph) of
+    Just (ResolvedStructural _ (RBare (ROptional _))) -> True
+    _ -> False
+  _ -> False
+
 hasConsumerNominalCodec :: Agg -> Bool
 hasConsumerNominalCodec = not . null . codecConsumerNominals
 
@@ -7476,11 +7711,19 @@
 hasEnforcedConsumerNominalIdCodec aggregate =
   any
     ( \nominal -> case (.representation) nominal of
-        IdRepresentation prefix -> isJust (idDomainContractFor ((.languageContract) aggregate) prefix)
+        IdRepresentation prefix _ -> isJust (idDomainContractFor ((.languageContract) aggregate) prefix)
         _ -> False
     )
     (codecConsumerNominals aggregate)
 
+codecEnforcedConsumerIdAdmissions :: Agg -> [IdAdmission]
+codecEnforcedConsumerIdAdmissions aggregate =
+  [ admission
+  | nominal <- codecConsumerNominals aggregate,
+    IdRepresentation prefix admission <- [(.representation) nominal],
+    isJust (idDomainContractFor ((.languageContract) aggregate) prefix)
+  ]
+
 emitEnumParsers :: Agg -> Text
 emitEnumParsers a =
   sectionsOf
@@ -7504,11 +7747,11 @@
 emitConsumerNominalParsers importPlan aggregate = sectionsOf [map emitParser (codecConsumerNominals aggregate)]
   where
     emitParser nominal = case ((.representation) nominal, (.ownership) nominal) of
-      (IdRepresentation prefix, ConsumerNominal binding) ->
+      (IdRepresentation prefix admission, ConsumerNominal binding) ->
         nl $
           [ parserName nominal <> " :: Text -> Parser " <> renderReferenceOrDie importPlan (haskellTypeReference ((.haskell) binding))
           ]
-            <> parserBody nominal prefix binding
+            <> parserBody nominal prefix admission binding
       (EnumRepresentation constructors, ConsumerNominal binding) ->
         nl $
           [ parserName nominal <> " :: Text -> Parser " <> renderReferenceOrDie importPlan (haskellTypeReference ((.haskell) binding)),
@@ -7526,14 +7769,14 @@
             <> ["  tag -> " <> renderUnknownFailure ((.name) nominal <> " wire value") "tag" (map snd (NE.toList constructors))]
       _ -> ""
     parserName nominal = "parse" <> (.name) nominal <> "Nominal"
-    parserBody nominal prefix binding = case idDomainContractFor ((.languageContract) aggregate) prefix of
+    parserBody nominal prefix admission binding = case idDomainContractFor ((.languageContract) aggregate) prefix of
       Nothing ->
         [ parserName nominal <> " input = case KindID.parseText @" <> tshow prefix <> " input of",
           "  Left reason -> fail (show reason)",
           "  Right representation -> pure (nominalFromRepresentation " <> renderReferenceOrDie importPlan (qualifiedValueReference ((.binding) binding)) <> " representation)"
         ]
       Just _ ->
-        [ parserName nominal <> " input = case validateIdDomainText (typeIdV7Domain " <> tshow prefix <> ") input of",
+        [ parserName nominal <> " input = case validateIdDomainText (" <> idDomainContractExpression admission prefix <> ") input of",
           "  Left reason -> fail (show reason)",
           "  Right () -> case KindID.parseText @" <> tshow prefix <> " input of",
           "    Left reason -> fail (show reason)",
@@ -7707,14 +7950,14 @@
     decodeMapped (AggregateMapped mappedKey) key = case (.typeGraph) a of
       Nothing -> error "mapped aggregate field has no resolved type graph"
       Just graph ->
-        "explicitParseField "
-          <> renderMappedParse graph ConsumerValueBoundary (mappedCodecPlanOrDie graph (RRef mappedKey))
-          <> " o "
-          <> tshow key
+        let parser = renderMappedParse graph ConsumerValueBoundary (mappedCodecPlanOrDie graph (RRef mappedKey))
+         in if mappedEventFieldAcceptsMissing a (AggregateMapped mappedKey)
+              then "parseOptionalField (" <> parser <> " Null) " <> parser <> " o " <> tshow key
+              else "explicitParseField " <> parser <> " o " <> tshow key
     decodeMapped _ _ = error "non-mapped aggregate type reached mapped codec lowering"
     decodeNominalField name nominal = case (.ownership) nominal of
       GeneratedNominal -> case (.representation) nominal of
-        IdRepresentation prefix -> case idDomainContractFor ((.languageContract) a) prefix of
+        IdRepresentation prefix _ -> case idDomainContractFor ((.languageContract) a) prefix of
           Nothing -> "(" <> (.name) nominal <> " <$> o .: " <> tshow name <> ")"
           Just _ -> "(" <> legacyNominalConstructorName nominal <> " <$> o .: " <> tshow name <> ")"
         EnumRepresentation {} ->
@@ -7792,7 +8035,7 @@
     nominalDefaultReferences =
       [ reference
       | ResolvedStructural _ shape <- codecMappedDeclarations aggregate,
-        field <- case shape of RRecord _ _ fields -> fields; REnum {} -> []; RUnion {} -> [],
+        field <- case shape of RRecord _ _ fields -> fields; REnum {} -> []; RUnion {} -> []; RBare {} -> []; RRefined {} -> [],
         Just (leaf, constructor) <- [nominalConstructorDefault field],
         reference <- case (.ownership) leaf of
           GeneratedLeaf ->
@@ -7877,7 +8120,9 @@
     MappedShapeAlgebra
       { onRecord = \_ _ fields -> concatMap (exprRefs . (.valueType)) fields,
         onEnum = const [],
-        onUnion = \_ arms -> concatMap (maybe [] exprRefs . (.payload)) arms
+        onUnion = \_ arms -> concatMap (maybe [] exprRefs . (.payload)) arms,
+        onBare = exprRefs,
+        onRefined = const []
       }
 
 exprRefs :: ResolvedTypeExpr -> [MappedKey]
@@ -7890,6 +8135,8 @@
         onBool = [],
         onNatural = [],
         onTime = [],
+        onDay = [],
+        onTextSet = [],
         onJson = [],
         onOptional = id,
         onList = id,
@@ -7953,7 +8200,11 @@
         onUnion = \encoding arms ->
           nl $
             ["encode" <> name <> "Shape = \\case"]
-              <> concatMap (unionEncodeArm encoding) arms
+              <> concatMap (unionEncodeArm encoding) arms,
+        onBare = \expression ->
+          "encode" <> name <> "Shape value = " <> encodeShapeExpr graph expression "value",
+        onRefined = \case
+          Base16BytesV1 -> "encode" <> name <> "Shape = encodeBase16Bytes"
       }
   where
     name = (.name) declaration
@@ -8003,7 +8254,11 @@
                    "validate" <> name <> "Tag tag",
                    "  | tag `elem` " <> renderTextList (map (.tag) arms) <> " = pure tag",
                    "  | otherwise = " <> renderUnknownFailure (name <> " union tag") "tag" (map (.tag) arms)
-                 ]
+                 ],
+        onBare = \expression ->
+          "parse" <> name <> "Shape = " <> decodeShapeExpr graph expression,
+        onRefined = \case
+          Base16BytesV1 -> "parse" <> name <> "Shape = parseBase16Bytes"
       }
   where
     name = (.name) declaration
@@ -8746,7 +9001,7 @@
             <> tshow value
             <> " of Right parsed -> parsed; Left _ -> error \"validated ID literal failed to parse\")"
       ConsumerNominal binding -> case (.representation) nominal of
-        IdRepresentation prefix ->
+        IdRepresentation prefix _ ->
           "K.lit (nominalFromRepresentation "
             <> renderReferenceOrDie importPlan (qualifiedValueReference ((.binding) binding))
             <> " (case KindID.parseText @"
@@ -8758,15 +9013,15 @@
     _ -> error "validated ID literal lost its nominal type"
   where
     idPrefixOf nominal = case (.representation) nominal of
-      IdRepresentation prefix -> Just prefix
+      IdRepresentation prefix _ -> Just prefix
       _ -> Nothing
 
 generatedIdSampleHaskell :: Agg -> ResolvedNominalType -> Maybe Text
 generatedIdSampleHaskell aggregate nominal = do
-  prefix <- case (.representation) nominal of
-    IdRepresentation value -> Just value
+  (prefix, admission) <- case (.representation) nominal of
+    IdRepresentation value selectedAdmission -> Just (value, selectedAdmission)
     _ -> Nothing
-  contract <- idDomainContractFor ((.languageContract) aggregate) prefix
+  contract <- idDomainContractForAdmission ((.languageContract) aggregate) admission prefix
   let name = (.name) nominal
       sample = idDomainSampleText contract
   pure
@@ -8802,7 +9057,7 @@
       ++ generatedNominalTypeImportsWithParsers
         (aggregateCheckedService aggregate)
         ((.context) aggregate)
-        generatedExpressionNominals
+        generatedImportedNominals
         generatedLiteralNominals
       ++ structuralProjectionImport
       ++ generatedNominalProjectionImport
@@ -8879,12 +9134,6 @@
         )
     consumerLiteralNominals = nub [nominal | expression <- resolvedExpressions, nominal <- typedConsumerLiteralNominals expression]
     importPlan = transducerImportPlan aggregate expressionImportTypes consumerLiteralNominals
-    generatedExpressionNominals =
-      stableNominals
-        [ nominal
-        | expression <- resolvedExpressions,
-          nominal <- typedGeneratedNominals expression
-        ]
     -- Only a literal names `parse<Id>`; see 'generatedNominalTypeImportsWithParsers'.
     generatedLiteralNominals =
       stableNominals
@@ -8893,6 +9142,14 @@
           literal <- typedExpressionLiterals expression,
           nominal <- typedGeneratedNominals literal
         ]
+    generatedProjectedNominals =
+      stableNominals
+        [ nominal
+        | ProjectionAlias {target = NominalProjectionAlias nominal _} <- projectionAliases,
+          GeneratedNominal <- [(.ownership) nominal]
+        ]
+    generatedImportedNominals =
+      stableNominals (generatedLiteralNominals <> generatedProjectedNominals)
     expressionUsesTimeLiteral = any (anyTypedExpression isTimeLiteral) resolvedExpressions
     expressionUsesNaturalLiteral = any (anyTypedExpression isNaturalLiteral) resolvedExpressions
     expressionUsesConsumerNominalLiteral = not (null consumerLiteralNominals)
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
@@ -336,7 +336,7 @@
       <> concat
         [ case node of
             NAggregate agg -> scaffoldAggregateForService ctx service agg <> harnessForServiceWithGoldens goldens ctx service agg
-            NProcess process -> scaffoldProcess ctx process <> harnessProcessForService ctx service process
+            NProcess process -> scaffoldProcessForService ctx service process <> harnessProcessForService ctx service process
             NRouter router -> scaffoldRouterForService ctx service router <> harnessRouterForService ctx service router
             NContract contract -> scaffoldContractForService ctx service contract
             NIntake intake -> scaffoldIntake ctx intake
diff --git a/src/Keiro/Dsl/SemanticImpact.hs b/src/Keiro/Dsl/SemanticImpact.hs
--- a/src/Keiro/Dsl/SemanticImpact.hs
+++ b/src/Keiro/Dsl/SemanticImpact.hs
@@ -724,6 +724,24 @@
       "enum:" <> T.intercalate "," [(.ctor) entry <> "=" <> (.tag) entry | entry <- sortOn (.tag) entries]
     structuralPresentation (RUnion _ arms) =
       "union:" <> T.intercalate "," [(.tag) arm | arm <- sortOn (.tag) arms]
+    structuralPresentation (RBare expression) = "value:" <> expressionPresentation expression
+    structuralPresentation (RRefined Base16BytesV1) = "refined:base16-bytes-v1"
+    expressionPresentation = \case
+      RText -> "Text"
+      RInt -> "Int"
+      RInteger -> "Integer"
+      RBool -> "Bool"
+      RNatural -> "Natural"
+      RTime -> "Time"
+      RDay -> "Day"
+      RTextSet -> "Set(Text)"
+      RJson -> "Json"
+      ROptional value -> "Optional(" <> expressionPresentation value <> ")"
+      RList value -> "List(" <> expressionPresentation value <> ")"
+      RMap value -> "Map(" <> expressionPresentation value <> ")"
+      RKeyedMap key value -> "Map[" <> (.name) key <> "](" <> expressionPresentation value <> ")"
+      RRef reference -> "Ref(" <> unMappedKey reference <> ")"
+      RNominal nominal -> "Nominal(" <> (.name) nominal <> ")"
 
 mappedConsumerIdentity :: MappedConsumer -> Name
 mappedConsumerIdentity (AggregateConsumer aggregate) = aggregate
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
@@ -187,7 +187,7 @@
     <> ["import Data.Aeson.Types qualified as AesonTypes" | not (null generatedIdAssertions)]
     <> ["import Data.List (nub)" | not (null structural) || not (null opaque)]
     <> ["import Data.List.NonEmpty qualified as NonEmpty" | not (null structural) || not (null opaque) || not (null consumerNominals)]
-    <> ["import Data.Map.Strict qualified as Map" | any structuralUsesKeyedMap structural]
+    <> ["import Data.Map.Strict qualified as Map" | any bareCoverageUsesMap structural || any generatedIdUsesKeyedMap generatedIdAssertions]
     <> ["import Data.KindID qualified as KindID" | any (nominalNeedsOrderingLaw rendering) consumerNominals]
     <> ["import Data.Maybe (isJust, isNothing)" | any shapeUsesMaybe structural]
     <> ["import Data.Proxy (Proxy (..))" | not (null structural) || not (null consumerNominals)]
@@ -227,18 +227,29 @@
       RRecord _ _ fields -> any (isOptional . (.valueType)) fields
       RUnion _ arms -> any (maybe False isOptional . (.payload)) arms
       REnum {} -> False
+      RBare expression -> isOptional expression
+      RRefined {} -> False
     isOptional ROptional {} = True
     isOptional _ = False
-    structuralUsesKeyedMap (_, shape) = any typeUsesKeyedMap (shapeExpressions shape)
-    shapeExpressions (RRecord _ _ fields) = map (.valueType) fields
-    shapeExpressions (RUnion _ arms) = [payload | arm <- arms, payload <- maybe [] pure ((.payload) arm)]
-    shapeExpressions REnum {} = []
-    typeUsesKeyedMap = \case
-      ROptional item -> typeUsesKeyedMap item
-      RList item -> typeUsesKeyedMap item
-      RMap item -> typeUsesKeyedMap item
-      RKeyedMap {} -> True
-      _ -> False
+    bareCoverageUsesMap (_, RBare RMap {}) = True
+    bareCoverageUsesMap _ = False
+    generatedIdUsesKeyedMap (_, shape, target) = shapeUsesTargetKey shape
+      where
+        shapeUsesTargetKey = \case
+          RRecord _ _ fields -> any (exprUsesTargetKey . (.valueType)) fields
+          RUnion _ arms -> any (maybe False exprUsesTargetKey . (.payload)) arms
+          REnum {} -> False
+          RBare expression -> exprUsesTargetKey expression
+          RRefined {} -> False
+        exprUsesTargetKey = \case
+          ROptional item -> exprUsesTargetKey item
+          RList item -> exprUsesTargetKey item
+          RMap item -> exprUsesTargetKey item
+          RKeyedMap key item -> (.name) key == (.name) target || exprUsesTargetKey item
+          RRef key -> case Map.lookup key ((.declarations) ((.graph) rendering)) of
+            Just (ResolvedStructural _ nestedShape) -> shapeUsesTargetKey nestedShape
+            _ -> False
+          _ -> False
 
 lastSegment :: Text -> Text
 lastSegment = last . T.splitOn "."
@@ -336,7 +347,9 @@
     MappedShapeAlgebra
       { onRecord = \_constructor _ _fields -> [],
         onEnum = map (constructorRef . (.ctor)),
-        onUnion = \_ -> map (constructorRef . (.ctor))
+        onUnion = \_ -> map (constructorRef . (.ctor)),
+        onBare = const [],
+        onRefined = const []
       }
   where
     moduleName = structuralShapeModuleName ctx ((.name) declaration)
@@ -452,6 +465,7 @@
         | (index, field) <- zip [0 :: Int ..] fields
         ]
   REnum _ -> "True"
+  RRefined {} -> "True"
   RUnion _ arms ->
     "(case " <> candidate <> " of " <> T.intercalate "; " (map renderArm arms) <> ")"
     where
@@ -463,6 +477,7 @@
               | nominalOccursIn rendering target payload ->
                   " payload" <> tshow depth <> " -> " <> generatedIdTypeExpression rendering target payload ("payload" <> tshow depth) (depth + 1)
               | otherwise -> " _ -> True"
+  RBare expression -> generatedIdTypeExpression rendering target expression candidate depth
 
 generatedIdTypeExpression :: ConformanceRendering -> NominalLeaf -> ResolvedTypeExpr -> Text -> Int -> Text
 generatedIdTypeExpression rendering target expression candidate depth = case expression of
@@ -583,6 +598,14 @@
         | entry <- entries
         ]
       RUnion _ arms -> concatMap (unionArmObligations rendering shapeModule) arms
+      RBare expression -> bareObligations expression
+      RRefined {} -> []
+
+    bareObligations = \case
+      ROptional _ -> ["any isNothing shapes", "any isJust shapes"]
+      RList _ -> ["any null shapes", "any (not . null) shapes"]
+      RMap _ -> ["any Map.null shapes", "any (not . Map.null) shapes"]
+      _ -> []
 
 recordFieldObligation :: ConformanceRendering -> Text -> ResolvedWireField -> [Text]
 recordFieldObligation _rendering _shapeModule field = case (.valueType) field of
diff --git a/src/Keiro/Dsl/TypeGraph.hs b/src/Keiro/Dsl/TypeGraph.hs
--- a/src/Keiro/Dsl/TypeGraph.hs
+++ b/src/Keiro/Dsl/TypeGraph.hs
@@ -64,6 +64,9 @@
     MappedDeclAlgebra (..),
     foldMappedDecl,
     wireFingerprint,
+    wireFingerprintForCalendarDayPolicy,
+    wireFingerprintForTextSetPolicy,
+    wireFingerprintForBase16BytesPolicy,
     nominalWireFingerprint,
   )
 where
@@ -85,6 +88,10 @@
 import Data.TypeID qualified as TypeID
 import Data.Word (Word64)
 import GHC.Generics (Generic)
+import Keiro.Codec.CalendarDay (calendarDayCodecPolicyIdentity)
+import Keiro.Codec.IdDomain (enforcedIdDomainVersion, v5OrV7IdDomainVersion)
+import Keiro.Codec.Refined (base16BytesCodecPolicyIdentity)
+import Keiro.Codec.TextSet (textSetCodecPolicyIdentity)
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellName (haskellKeywords)
 import Numeric (showHex)
@@ -178,7 +185,7 @@
   deriving stock (Eq, Ord, Show, Generic)
 
 data NominalLeafKind
-  = NominalIdLeaf !Text
+  = NominalIdLeaf !Text !IdAdmission
   | NominalEnumLeaf !(NonEmpty (Name, Text))
   | NominalScalarLeaf !NominalScalarRepresentation
   deriving stock (Eq, Ord, Show, Generic)
@@ -222,7 +229,7 @@
       Right
         NominalLeaf
           { name = (.name) declaration,
-            kind = NominalIdLeaf ((.prefix) declaration),
+            kind = NominalIdLeaf ((.prefix) declaration) ((.admission) declaration),
             ownership = ownership,
             loc = (.loc) declaration
           }
@@ -366,6 +373,27 @@
           }
         shape
     )
+checkMappedDecl MappedRefined {mrName = name, mrHaskell = haskell, mrBinding = binding, mrBindingVersion = bindingVersion, mrCanonical = canonical, mrFixtures = fixtures, mrInitial = initial, mrPolicy = policy, mrLoc = loc} = do
+  checkedHaskell <- require (MissingHaskellSource name) haskell
+  checkedBinding <- require (MissingStructuralBinding name) binding >>= liftOne . mkQualifiedValueName
+  checkedBindingVersion <- require (MissingStructuralBindingVersion name) bindingVersion >>= liftOne . mkBindingVersion
+  checkedCanonical <- require (MissingCanonicalType name) canonical >>= liftOne . mkCanonicalTypeId
+  checkedFixtures <- require (MissingFixtureCases name) fixtures >>= liftOne . mkQualifiedValueName
+  checkedInitial <- traverse (liftOne . mkQualifiedValueName) initial
+  pure
+    ( CheckedStructural
+        StructuralDecl
+          { name = name,
+            haskell = checkedHaskell,
+            binding = checkedBinding,
+            bindingVersion = checkedBindingVersion,
+            canonical = checkedCanonical,
+            fixtures = checkedFixtures,
+            initial = checkedInitial,
+            loc = loc
+          }
+        (ShapeRefined policy)
+    )
 checkMappedDecl MappedOpaque {moName = name, moHaskell = haskell, moCodecId = codecIdentity, moCodecVersion = codecVersion, moFixtures = fixtures, moInitial = initial, moLoc = loc} = do
   checkedHaskell <- require (MissingHaskellSource name) haskell
   checkedCodecIdentity <- require (MissingOpaqueCodecIdentity name) codecIdentity >>= liftOne . mkCodecIdentity
@@ -404,6 +432,8 @@
   | RBool
   | RNatural
   | RTime
+  | RDay
+  | RTextSet
   | RJson
   | ROptional !ResolvedTypeExpr
   | RList !ResolvedTypeExpr
@@ -435,6 +465,8 @@
   = RRecord !Name !UnknownFields ![ResolvedWireField]
   | REnum ![WireEnum]
   | RUnion !UnionEncoding ![ResolvedWireArm]
+  | RBare !ResolvedTypeExpr
+  | RRefined !RefinedWirePolicy
   deriving stock (Eq, Show, Generic)
 
 data ResolvedMappedDecl
@@ -647,6 +679,7 @@
 
 rawName :: MappedDecl -> Name
 rawName MappedStructural {msName = name} = name
+rawName MappedRefined {mrName = name} = name
 rawName MappedOpaque {moName = name} = name
 
 checkedName :: CheckedMappedDecl -> Name
@@ -699,6 +732,9 @@
         ((.tag) arm)
         <$> traverse (resolveExpr keyByName nominalByName enumNames owner ((.loc) arm)) ((.payload) arm)
         <*> pure ((.loc) arm)
+resolveShape keyByName nominalByName enumNames owner (ShapeBare expression) =
+  RBare <$> resolveExpr keyByName nominalByName enumNames owner noLoc expression
+resolveShape _ _ _ _ (ShapeRefined policy) = Right (RRefined policy)
 
 resolveExpr :: Map Name MappedKey -> Map Name NominalLeaf -> Set Name -> Name -> Loc -> TypeExpr -> Either TypeGraphError ResolvedTypeExpr
 resolveExpr _ _ _ _ _ TText = Right RText
@@ -707,6 +743,8 @@
 resolveExpr _ _ _ _ _ TBool = Right RBool
 resolveExpr _ _ _ _ _ TNatural = Right RNatural
 resolveExpr _ _ _ _ _ TTime = Right RTime
+resolveExpr _ _ _ _ _ TDay = Right RDay
+resolveExpr _ _ _ _ _ TTextSet = Right RTextSet
 resolveExpr _ _ _ _ _ TJson = Right RJson
 resolveExpr names nominals enums owner loc (TOptional value) = ROptional <$> resolveExpr names nominals enums owner loc value
 resolveExpr names nominals enums owner loc (TList value) = RList <$> resolveExpr names nominals enums owner loc value
@@ -763,7 +801,9 @@
     MappedShapeAlgebra
       { onRecord = \_ _ fields -> Set.unions (map (refsInExpr . (.valueType)) fields),
         onEnum = const Set.empty,
-        onUnion = \_ arms -> Set.unions (map (maybe Set.empty refsInExpr . (.payload)) arms)
+        onUnion = \_ arms -> Set.unions (map (maybe Set.empty refsInExpr . (.payload)) arms),
+        onBare = refsInExpr,
+        onRefined = const Set.empty
       }
 
 refsInExpr :: ResolvedTypeExpr -> Set MappedKey
@@ -776,6 +816,8 @@
         onBool = Set.empty,
         onNatural = Set.empty,
         onTime = Set.empty,
+        onDay = Set.empty,
+        onTextSet = Set.empty,
         onJson = Set.empty,
         onOptional = id,
         onList = id,
@@ -795,6 +837,8 @@
         onBool = Set.empty,
         onNatural = Set.empty,
         onTime = Set.empty,
+        onDay = Set.empty,
+        onTextSet = Set.empty,
         onJson = Set.empty,
         onOptional = id,
         onList = id,
@@ -813,7 +857,9 @@
             MappedShapeAlgebra
               { onRecord = \_ _ fields -> Set.unions (map (nominalRefsInExpr . (.valueType)) fields),
                 onEnum = const Set.empty,
-                onUnion = \_ arms -> Set.unions (map (maybe Set.empty nominalRefsInExpr . (.payload)) arms)
+                onUnion = \_ arms -> Set.unions (map (maybe Set.empty nominalRefsInExpr . (.payload)) arms),
+                onBare = nominalRefsInExpr,
+                onRefined = const Set.empty
               }
             shape,
         onOpaqueDecl = const Set.empty
@@ -948,6 +994,8 @@
       RBool -> Nothing
       RNatural -> Nothing
       RTime -> Nothing
+      RDay -> Nothing
+      RTextSet -> Nothing
       RJson -> Nothing
       ROptional value -> prepend SegOptional (rootReference value)
       RList value -> prepend SegElem (rootReference value)
@@ -1010,7 +1058,9 @@
               concat
                 [ map (SegArm ((.ctor) arm) ((.tag) arm) :) (maybe [] (pathsInExpr visited) ((.payload) arm))
                 | arm <- arms
-                ]
+                ],
+            onBare = pathsInExpr visited,
+            onRefined = const []
           }
 
     pathsInExpr visited = \case
@@ -1020,6 +1070,8 @@
       RBool -> []
       RNatural -> []
       RTime -> []
+      RDay -> []
+      RTextSet -> []
       RJson -> []
       ROptional value -> map (SegOptional :) (pathsInExpr visited value)
       RList value -> map (SegElem :) (pathsInExpr visited value)
@@ -1076,7 +1128,9 @@
               concat
                 [ map (SegArm ((.ctor) arm) ((.tag) arm) :) (maybe [] (pathsInExpr visited) ((.payload) arm))
                 | arm <- arms
-                ]
+                ],
+            onBare = pathsInExpr visited,
+            onRefined = const []
           }
 
     pathsInExpr visited = \case
@@ -1086,6 +1140,8 @@
       RBool -> []
       RNatural -> []
       RTime -> []
+      RDay -> []
+      RTextSet -> []
       RJson -> []
       ROptional value -> map (SegOptional :) (pathsInExpr visited value)
       RList value -> map (SegElem :) (pathsInExpr visited value)
@@ -1145,6 +1201,8 @@
     onBool :: a,
     onNatural :: a,
     onTime :: a,
+    onDay :: a,
+    onTextSet :: a,
     onJson :: a,
     onOptional :: a -> a,
     onList :: a -> a,
@@ -1162,6 +1220,8 @@
   RBool -> (.onBool) algebra
   RNatural -> (.onNatural) algebra
   RTime -> (.onTime) algebra
+  RDay -> (.onDay) algebra
+  RTextSet -> (.onTextSet) algebra
   RJson -> (.onJson) algebra
   ROptional value -> (.onOptional) algebra (foldTypeExpr algebra value)
   RList value -> (.onList) algebra (foldTypeExpr algebra value)
@@ -1173,7 +1233,9 @@
 data MappedShapeAlgebra a = MappedShapeAlgebra
   { onRecord :: Name -> UnknownFields -> [ResolvedWireField] -> a,
     onEnum :: [WireEnum] -> a,
-    onUnion :: UnionEncoding -> [ResolvedWireArm] -> a
+    onUnion :: UnionEncoding -> [ResolvedWireArm] -> a,
+    onBare :: ResolvedTypeExpr -> a,
+    onRefined :: RefinedWirePolicy -> a
   }
 
 foldMappedShape :: MappedShapeAlgebra a -> ResolvedMappedShape -> a
@@ -1181,6 +1243,8 @@
   RRecord constructor unknownFields fields -> (.onRecord) algebra constructor unknownFields fields
   REnum entries -> (.onEnum) algebra entries
   RUnion encoding arms -> (.onUnion) algebra encoding arms
+  RBare expression -> (.onBare) algebra expression
+  RRefined policy -> (.onRefined) algebra policy
 
 data MappedDeclAlgebra a = MappedDeclAlgebra
   { onStructuralDecl :: StructuralDecl -> ResolvedMappedShape -> a,
@@ -1193,7 +1257,30 @@
   ResolvedOpaque declaration -> (.onOpaqueDecl) algebra declaration
 
 wireFingerprint :: TypeGraph -> Name -> Text
-wireFingerprint graph name = fnv1a64 (wireDecl Set.empty (MappedKey name))
+wireFingerprint = wireFingerprintWithPolicies calendarDayCodecPolicyIdentity textSetCodecPolicyIdentity base16BytesCodecPolicyIdentity
+
+-- | Compatibility-analysis seam for proving that a calendar-day policy bump
+-- changes persisted wire identity. Production callers use 'wireFingerprint',
+-- which always selects the released Keiro policy.
+wireFingerprintForCalendarDayPolicy :: Text -> TypeGraph -> Name -> Text
+wireFingerprintForCalendarDayPolicy calendarDayPolicy =
+  wireFingerprintWithPolicies calendarDayPolicy textSetCodecPolicyIdentity base16BytesCodecPolicyIdentity
+
+-- | Compatibility-analysis seam for proving that a text-set policy bump
+-- changes persisted wire identity. Production callers use 'wireFingerprint',
+-- which always selects the released Keiro policy.
+wireFingerprintForTextSetPolicy :: Text -> TypeGraph -> Name -> Text
+wireFingerprintForTextSetPolicy =
+  \textSetPolicy -> wireFingerprintWithPolicies calendarDayCodecPolicyIdentity textSetPolicy base16BytesCodecPolicyIdentity
+
+-- | Compatibility-analysis seam for proving that a base16-bytes policy bump
+-- changes persisted wire identity. Production callers use 'wireFingerprint'.
+wireFingerprintForBase16BytesPolicy :: Text -> TypeGraph -> Name -> Text
+wireFingerprintForBase16BytesPolicy =
+  wireFingerprintWithPolicies calendarDayCodecPolicyIdentity textSetCodecPolicyIdentity
+
+wireFingerprintWithPolicies :: Text -> Text -> Text -> TypeGraph -> Name -> Text
+wireFingerprintWithPolicies calendarDayPolicy textSetPolicy base16BytesPolicy graph name = fnv1a64 (wireDecl Set.empty (MappedKey name))
   where
     declarations = (.declarations) graph
 
@@ -1226,7 +1313,10 @@
                 <> renderUnknown ((.unknownFields) encoding)
                 <> ";"
                 <> T.intercalate ";" (map (wireArm visited) (sortOn (.tag) arms))
-                <> ")"
+                <> ")",
+            onBare = wireExpr visited,
+            onRefined = \case
+              Base16BytesV1 -> "base16-bytes(" <> base16BytesPolicy <> ")"
           }
 
     wireField visited field =
@@ -1247,6 +1337,8 @@
       RBool -> "bool"
       RNatural -> "natural"
       RTime -> "time"
+      RDay -> "calendar-day(" <> calendarDayPolicy <> ")"
+      RTextSet -> "text-set(" <> textSetPolicy <> ")"
       RJson -> "json"
       ROptional value -> "optional(" <> wireExpr visited value <> ")"
       RList value -> "list(" <> wireExpr visited value <> ")"
@@ -1280,7 +1372,7 @@
 
 nominalWireToken :: NominalLeaf -> Text
 nominalWireToken leaf = case (.kind) leaf of
-  NominalIdLeaf prefix -> "nominal-id(" <> prefix <> "," <> nominalIdDomainVersion <> ")"
+  NominalIdLeaf prefix admission -> "nominal-id(" <> prefix <> "," <> idAdmissionVersion admission <> ")"
   NominalEnumLeaf constructors ->
     "nominal-enum(" <> T.intercalate ";" (sort (map snd (NE.toList constructors))) <> ")"
   NominalScalarLeaf representation -> "nominal-scalar(" <> scalarToken representation <> ")"
@@ -1292,11 +1384,9 @@
       NominalBool -> "Bool"
       NominalTime -> "Time"
 
--- Kept byte-identical to Keiro.Dsl.IdDomain.enforcedIdDomainVersion.  This
--- low-level graph module cannot import IdDomain because that module reads
--- CheckedService, whose analysis contains this graph.
-nominalIdDomainVersion :: Text
-nominalIdDomainVersion = "keiro-dsl/id-domain/typeid-v7/1"
+idAdmissionVersion :: IdAdmission -> Text
+idAdmissionVersion TypeIdV7 = enforcedIdDomainVersion
+idAdmissionVersion TypeIdV5OrV7 = v5OrV7IdDomainVersion
 
 fnv1a64 :: Text -> Text
 fnv1a64 input =
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
@@ -47,7 +47,7 @@
 import Keiro.Dsl.FieldIdentity
 import Keiro.Dsl.Grammar
 import Keiro.Dsl.HaskellName qualified as HaskellName
-import Keiro.Dsl.IdDomain (contractIdDomainContractFor, idDomainContractFor)
+import Keiro.Dsl.IdDomain (contractIdDomainContractFor, idDomainContractForDeclaration)
 import Keiro.Dsl.LanguageVersion (LanguageVersion, RuntimeCapability (..), SourceLanguage (..), effectiveLanguageVersion, languageVersionText, runtimeProfileHasCapability, sourceFormText)
 import Keiro.Dsl.NominalType qualified as Nominal
 import Keiro.Dsl.ProcessReaction qualified as ProcessReaction
@@ -873,7 +873,7 @@
       [ mkErr (locLine ((.loc) declaration)) NominalInvalidIdPrefix $
           "id '" <> (.name) declaration <> "' has invalid TypeID prefix '" <> (.prefix) declaration <> "': " <> T.pack (show reason)
       | declaration <- (.ids) spec,
-        Just _ <- [idDomainContractFor languageContract ((.prefix) declaration)],
+        Just _ <- [idDomainContractForDeclaration languageContract declaration],
         Just reason <- [TypeID.checkPrefix ((.prefix) declaration)]
       ]
     resolutionErrors = case Nominal.resolveNominalTypes spec of
@@ -1083,6 +1083,7 @@
       "Natural" -> TNatural
       "Time" -> TTime
       "UTCTime" -> TTime
+      "Day" -> TDay
       "Json" -> TJson
       _ -> TRef name
 
@@ -1126,6 +1127,7 @@
       InvalidRegisterInitial resolved detail ->
         "invalid " <> aggregateCanonicalName resolved <> " register initial: " <> detail
     unsupportedShapeGuidance = \case
+      TDay -> "; declare a named `mapped structural value` with `wire Day` and use that mapping as the aggregate field type"
       TOptional (TRef name)
         | name `Set.member` nominalNames ->
             "; declare `mapped structural record "
@@ -1263,18 +1265,22 @@
 
 mappedName :: MappedDecl -> Name
 mappedName MappedStructural {msName = name} = name
+mappedName MappedRefined {mrName = name} = name
 mappedName MappedOpaque {moName = name} = name
 
 mappedLoc :: MappedDecl -> Loc
 mappedLoc MappedStructural {msLoc = loc} = loc
+mappedLoc MappedRefined {mrLoc = loc} = loc
 mappedLoc MappedOpaque {moLoc = loc} = loc
 
 mappedHaskell :: MappedDecl -> Maybe HaskellSource
 mappedHaskell MappedStructural {msHaskell = source} = source
+mappedHaskell MappedRefined {mrHaskell = source} = source
 mappedHaskell MappedOpaque {moHaskell = source} = source
 
 mappedCanonical :: MappedDecl -> Maybe Text
 mappedCanonical MappedStructural {msCanonical = canonical} = canonical
+mappedCanonical MappedRefined {mrCanonical = canonical} = canonical
 mappedCanonical MappedOpaque {} = Nothing
 
 mappedLexicalRules :: Spec -> [Diagnostic]
@@ -1299,6 +1305,8 @@
 
     qualifiedFacts MappedStructural {msBinding = binding, msFixtures = fixtures, msInitial = initial, msLoc = loc} =
       concatMap (qualifiedRule loc) [("binding", binding), ("fixtures", fixtures), ("initial", initial)]
+    qualifiedFacts MappedRefined {mrBinding = binding, mrFixtures = fixtures, mrInitial = initial, mrLoc = loc} =
+      concatMap (qualifiedRule loc) [("binding", binding), ("fixtures", fixtures), ("initial", initial)]
     qualifiedFacts MappedOpaque {moFixtures = fixtures, moInitial = initial, moLoc = loc} =
       concatMap (qualifiedRule loc) [("fixtures", fixtures), ("initial", initial)]
 
@@ -1327,6 +1335,9 @@
         | arm <- arms,
           not (constructorSafe ((.ctor) arm))
         ]
+      MappedStructural {msShape = ShapeBare {}} -> []
+      MappedStructural {msShape = ShapeRefined {}} -> []
+      MappedRefined {} -> []
       MappedOpaque {} -> []
 
     constructorRule category value declaration =
@@ -1347,6 +1358,7 @@
   ]
   where
     identityValues MappedStructural {msBindingVersion = bindingVersion, msCanonical = canonical} = present [bindingVersion, canonical]
+    identityValues MappedRefined {mrBindingVersion = bindingVersion, mrCanonical = canonical} = present [bindingVersion, canonical]
     identityValues MappedOpaque {moCodecId = codecIdentity, moCodecVersion = codecVersion} = present [codecIdentity, codecVersion]
     present = foldr (maybe id (:)) []
 
@@ -1401,7 +1413,12 @@
                       | arm <- arms,
                         payload <- maybeToList ((.payload) arm),
                         nominal <- Set.toAscList (nominalNamesInExpr payload)
-                      ]
+                      ],
+                    onBare = \expression ->
+                      [ languageError ((.loc) declaration) ("mapped declaration '" <> (.name) declaration <> "' bare value") nominal
+                      | nominal <- Set.toAscList (nominalNamesInExpr expression)
+                      ],
+                    onRefined = const []
                   }
                 shape,
             onOpaqueDecl = const []
@@ -1439,6 +1456,8 @@
         onBool = Set.empty,
         onNatural = Set.empty,
         onTime = Set.empty,
+        onDay = Set.empty,
+        onTextSet = Set.empty,
         onJson = Set.empty,
         onOptional = id,
         onList = id,
@@ -1553,9 +1572,25 @@
                  | arm <- arms,
                    T.null ((.tag) arm)
                  ]
-              ++ concatMap (armRules declaration) arms
+              ++ concatMap (armRules declaration) arms,
+          onBare = \expression ->
+            [ mappedError ((.loc) declaration) MappedUnsupportedEncoding declaration "bare structural values must have Day, Set Text, Optional, List, or text-keyed Map as their outer constructor"
+            | not (supportedBareRoot expression)
+            ]
+              ++ [ mappedError ((.loc) declaration) MappedNonInjectiveNullability declaration "bare value contains Optional around a null-capable Json, Optional, or opaque mapped value"
+                 | hasNonInjectiveOptional graph expression
+                 ],
+          onRefined = const []
         }
 
+    supportedBareRoot = \case
+      ROptional {} -> True
+      RList {} -> True
+      RMap {} -> True
+      RDay -> True
+      RTextSet -> True
+      _ -> False
+
     fieldRules declaration field =
       defaultRules declaration field
         ++ [ mappedError ((.loc) field) MappedNonInjectiveNullability declaration $
@@ -1630,6 +1665,8 @@
         onBool = DefaultBool,
         onNatural = DefaultNatural,
         onTime = DefaultOther,
+        onDay = DefaultOther,
+        onTextSet = DefaultOther,
         onJson = DefaultOther,
         onOptional = const DefaultOptional,
         onList = const DefaultList,
@@ -1653,7 +1690,9 @@
               MappedShapeAlgebra
                 { onRecord = \_ _ _ -> DefaultOther,
                   onEnum = DefaultEnum . Set.fromList . map (.ctor),
-                  onUnion = \_ _ -> DefaultOther
+                  onUnion = \_ _ -> DefaultOther,
+                  onBare = defaultType graph,
+                  onRefined = const DefaultOther
                 }
               shape,
           onOpaqueDecl = const DefaultOther
@@ -1666,37 +1705,50 @@
   }
 
 hasNonInjectiveOptional :: TypeGraph -> ResolvedTypeExpr -> Bool
-hasNonInjectiveOptional graph =
-  (.badOptional)
-    . foldTypeExpr
-      TypeExprAlgebra
-        { onText = nonNull,
-          onInt = nonNull,
-          onInteger = nonNull,
-          onBool = nonNull,
-          onNatural = nonNull,
-          onTime = nonNull,
-          onJson = nullable,
-          onOptional = \child -> NullabilityFacts True ((.topNull) child || (.badOptional) child),
-          onList = nestedNonNull,
-          onMap = nestedNonNull,
-          onKeyedMap = \_ -> nestedNonNull,
-          onRef = \key -> if mappedRefIsOpaque graph key then nullable else nonNull,
-          onNominal = const nonNull
-        }
+hasNonInjectiveOptional graph = (.badOptional) . nullabilityFacts graph
+
+nullabilityFacts :: TypeGraph -> ResolvedTypeExpr -> NullabilityFacts
+nullabilityFacts graph =
+  foldTypeExpr
+    TypeExprAlgebra
+      { onText = nonNull,
+        onInt = nonNull,
+        onInteger = nonNull,
+        onBool = nonNull,
+        onNatural = nonNull,
+        onTime = nonNull,
+        onDay = nonNull,
+        onTextSet = nonNull,
+        onJson = nullable,
+        onOptional = \child -> NullabilityFacts True ((.topNull) child || (.badOptional) child),
+        onList = nestedNonNull,
+        onMap = nestedNonNull,
+        onKeyedMap = \_ -> nestedNonNull,
+        onRef = mappedRefNullability graph,
+        onNominal = const nonNull
+      }
   where
     nonNull = NullabilityFacts False False
     nullable = NullabilityFacts True False
     nestedNonNull child = NullabilityFacts False ((.badOptional) child)
 
-mappedRefIsOpaque :: TypeGraph -> MappedKey -> Bool
-mappedRefIsOpaque graph key = case Map.lookup key ((.declarations) graph) of
-  Nothing -> False
+mappedRefNullability :: TypeGraph -> MappedKey -> NullabilityFacts
+mappedRefNullability graph key = case Map.lookup key ((.declarations) graph) of
+  Nothing -> NullabilityFacts False False
   Just declaration ->
     foldMappedDecl
       MappedDeclAlgebra
-        { onStructuralDecl = \_ _ -> False,
-          onOpaqueDecl = const True
+        { onStructuralDecl = \_ shape ->
+            foldMappedShape
+              MappedShapeAlgebra
+                { onRecord = \_ _ _ -> NullabilityFacts False False,
+                  onEnum = const (NullabilityFacts False False),
+                  onUnion = \_ _ -> NullabilityFacts False False,
+                  onBare = nullabilityFacts graph,
+                  onRefined = const (NullabilityFacts False False)
+                }
+              shape,
+          onOpaqueDecl = const (NullabilityFacts True False)
         }
       declaration
 
@@ -2030,8 +2082,10 @@
             [ ((.name) nominal, nominal)
             | (_, AggregateNominal nominal) <- resolvedHarnessFields,
               Nominal.GeneratedNominal <- [(.ownership) nominal],
-              Nominal.IdRepresentation prefix <- [(.representation) nominal],
-              idDomainContractFor languageContract prefix /= Nothing
+              Nominal.IdRepresentation {} <- [(.representation) nominal],
+              declaration <- (.ids) spec,
+              (.name) declaration == (.name) nominal,
+              idDomainContractForDeclaration languageContract declaration /= Nothing
             ]
         timeFields = [field | (field, AggregateTime) <- resolvedHarnessFields]
         timeSample = case filter ((== "observedAt") . (.name)) timeFields of
@@ -2409,6 +2463,7 @@
       | any ((== declaredName) . rawMappedName) ((.mapped) spec) = "is a mapped declaration; contract declared-ID fields must name a declared id"
       | otherwise = "is not a declared id"
     rawMappedName MappedStructural {msName = name} = name
+    rawMappedName MappedRefined {mrName = name} = name
     rawMappedName MappedOpaque {moName = name} = name
     schemaVersionFloor =
       [ mkErr (locLine ((.loc) contract)) ContractSchemaVersionBelowMinimum $
diff --git a/src/Keiro/Dsl/Workspace.hs b/src/Keiro/Dsl/Workspace.hs
--- a/src/Keiro/Dsl/Workspace.hs
+++ b/src/Keiro/Dsl/Workspace.hs
@@ -1255,10 +1255,12 @@
 
 mappedDeclName :: MappedDecl -> Name
 mappedDeclName MappedStructural {msName = name} = name
+mappedDeclName MappedRefined {mrName = name} = name
 mappedDeclName MappedOpaque {moName = name} = name
 
 mappedDeclLoc :: MappedDecl -> Loc
 mappedDeclLoc MappedStructural {msLoc = loc} = loc
+mappedDeclLoc MappedRefined {mrLoc = loc} = loc
 mappedDeclLoc MappedOpaque {moLoc = loc} = loc
 
 -- | Build the ownership index from members carrying their original locations.
@@ -1453,6 +1455,9 @@
 
 instance HasLocs Hole
 
+instance HasLocs IdAdmission where
+  traverseLocs _ = pure
+
 instance HasLocs IdDecl
 
 instance HasLocs IdExpr
@@ -1472,6 +1477,8 @@
 instance HasLocs MappedDecl
 
 instance HasLocs MappedShape
+
+instance HasLocs RefinedWirePolicy
 
 instance HasLocs Mapping
 
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
@@ -281,7 +281,7 @@
 
     emittersFor node = case node of
       NAggregate aggregate -> scaffoldAggregateForService ctx service aggregate <> harnessForServiceWithGoldens goldens ctx service aggregate
-      NProcess process -> scaffoldProcess ctx process <> harnessProcessForService ctx service process
+      NProcess process -> scaffoldProcessForService ctx service process <> harnessProcessForService ctx service process
       NRouter router -> scaffoldRouterForService ctx service router <> harnessRouterForService ctx service router
       NContract contract -> scaffoldContractForService ctx service contract
       NIntake intake -> scaffoldIntake ctx intake
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]
+                     [GeneratedIdDomainTypeIdV7, NominalEqualityV2, ContractIdDomainTypeIdV7, StrictSpecSurfaceValidation, ProjectionCatalogRuntime, TypedDomainCommandOutcomes, SeparatedProjectionQueryPolicy, DelegatedInboxRuntime, StructuralNominalLeaves, BareStructuralMappings, CalendarDayMappings, TextSetMappings, RefinedBase16Mappings, ExplicitIdAdmissionDomains]
                    ]
       map (runtimeProfileFoldSegments . (.runtimeSemanticsProfile)) (NE.toList languageRegistry)
         `shouldBe` [ [],
@@ -81,6 +81,11 @@
               WorkqueueFifoHeadsSyntax -> version 6
               ContractDeclaredIdSyntax -> version 6
               KeyedMapSyntax -> version 6
+              BareStructuralMappingSyntax -> version 6
+              CalendarDaySyntax -> version 6
+              TextSetSyntax -> version 6
+              RefinedBase16Syntax -> version 6
+              ExplicitIdAdmissionDomainSyntax -> version 6
               FieldAliasSyntax -> version 4
               _ -> version 2
         languageFeatureMinimumVersion feature `shouldBe` minimumVersion
@@ -184,7 +189,8 @@
 
 featureCases :: [FeatureCase]
 featureCases =
-  [ FeatureCase NominalBindingSyntax "using" (featureBody NominalBindingSyntax),
+  [ FeatureCase ExplicitIdAdmissionDomainSyntax "domain" (featureBody ExplicitIdAdmissionDomainSyntax),
+    FeatureCase NominalBindingSyntax "using" (featureBody NominalBindingSyntax),
     FeatureCase IntegerScalarSyntax "Integer" (featureBody IntegerScalarSyntax),
     FeatureCase TypedAggregateExpressionSyntax "cmd." (featureBody TypedAggregateExpressionSyntax),
     FeatureCase ExplicitTransitionImplementationSyntax "implementation hole" (featureBody ExplicitTransitionImplementationSyntax),
@@ -200,11 +206,16 @@
     FeatureCase DelegatedInboxSyntax "idempotence" delegatedInboxFeatureBody,
     FeatureCase ProcessReactionSyntax "reactions" processReactionFeatureBody,
     FeatureCase WorkqueueFifoHeadsSyntax "fifo-heads" (featureBody WorkqueueFifoHeadsSyntax),
-    FeatureCase ContractDeclaredIdSyntax "ProfileId" (featureBody ContractDeclaredIdSyntax)
+    FeatureCase ContractDeclaredIdSyntax "ProfileId" (featureBody ContractDeclaredIdSyntax),
+    FeatureCase BareStructuralMappingSyntax "value" (featureBody BareStructuralMappingSyntax),
+    FeatureCase CalendarDaySyntax "Day" (featureBody CalendarDaySyntax),
+    FeatureCase TextSetSyntax "Set" (featureBody TextSetSyntax),
+    FeatureCase RefinedBase16Syntax "refined" (featureBody RefinedBase16Syntax)
   ]
 
 featureBody :: LanguageFeature -> Text
 featureBody = \case
+  ExplicitIdAdmissionDomainSyntax -> T.unlines ["context profile", "id ProfileId prefix=profile domain=typeid-v5-or-v7"]
   NominalBindingSyntax -> T.unlines ["context profile", "id ProfileId prefix=profile using {}"]
   IntegerScalarSyntax -> T.unlines ["context profile", "aggregate Counter", "  regs", "    count Integer = 0", "  states Open"]
   TypedAggregateExpressionSyntax ->
@@ -294,6 +305,58 @@
         "  event ProfileChanged on events { profileId: ProfileId }",
         "}"
       ]
+  BareStructuralMappingSyntax ->
+    T.unlines
+      [ "context profile",
+        "mapped structural value OptionalLabel {",
+        "  haskell package=profile module=Example.Profile type=OptionalLabel",
+        "  binding = \"Example.Profile.optionalLabelBinding\"",
+        "  binding-version = \"1\"",
+        "  canonical-type = \"example.OptionalLabel.v1\"",
+        "  fixtures = \"Example.Profile.optionalLabelFixtures\"",
+        "  wire Optional Text",
+        "}"
+      ]
+  CalendarDaySyntax ->
+    T.unlines
+      [ "context profile",
+        "mapped structural record ProfileDay {",
+        "  haskell package=profile module=Example.Profile type=ProfileDay",
+        "  binding = \"Example.Profile.profileDayBinding\"",
+        "  binding-version = \"1\"",
+        "  canonical-type = \"example.ProfileDay.v1\"",
+        "  fixtures = \"Example.Profile.profileDayFixtures\"",
+        "  wire object constructor=ProfileDay unknown-fields=reject {",
+        "    day as \"day\" : Day required",
+        "  }",
+        "}"
+      ]
+  TextSetSyntax ->
+    T.unlines
+      [ "context profile",
+        "mapped structural record ProfileLabels {",
+        "  haskell package=profile module=Example.Profile type=ProfileLabels",
+        "  binding = \"Example.Profile.profileLabelsBinding\"",
+        "  binding-version = \"1\"",
+        "  canonical-type = \"example.ProfileLabels.v1\"",
+        "  fixtures = \"Example.Profile.profileLabelsFixtures\"",
+        "  wire object constructor=ProfileLabels unknown-fields=reject {",
+        "    labels as \"labels\" : Set Text required",
+        "  }",
+        "}"
+      ]
+  RefinedBase16Syntax ->
+    T.unlines
+      [ "context profile",
+        "mapped refined ProfileHash {",
+        "  haskell package=profile module=Example.Profile type=ProfileHash",
+        "  binding = \"Example.Profile.profileHashBinding\"",
+        "  binding-version = \"1\"",
+        "  canonical-type = \"example.ProfileHash.v1\"",
+        "  fixtures = \"Example.Profile.profileHashFixtures\"",
+        "  wire base16-bytes",
+        "}"
+      ]
   KeyedMapSyntax ->
     T.unlines
       [ "context profile",
@@ -308,7 +371,7 @@
       ]
 
 allFeatures :: [LanguageFeature]
-allFeatures = [NominalBindingSyntax, IntegerScalarSyntax, TypedAggregateExpressionSyntax, ExplicitTransitionImplementationSyntax, FieldAliasSyntax, ProjectionCatalogSyntax, ExternalReadContractSyntax, MappedConsumerSurfaceSyntax, DomainCommandOutcomeSyntax, DeclarativeRouterSelectionSyntax, SeparatedProjectionQueryPolicySyntax, DelegatedInboxSyntax, ProcessReactionSyntax, WorkqueueFifoHeadsSyntax, ContractDeclaredIdSyntax, KeyedMapSyntax]
+allFeatures = [ExplicitIdAdmissionDomainSyntax, NominalBindingSyntax, IntegerScalarSyntax, TypedAggregateExpressionSyntax, ExplicitTransitionImplementationSyntax, FieldAliasSyntax, ProjectionCatalogSyntax, ExternalReadContractSyntax, MappedConsumerSurfaceSyntax, DomainCommandOutcomeSyntax, DeclarativeRouterSelectionSyntax, SeparatedProjectionQueryPolicySyntax, DelegatedInboxSyntax, ProcessReactionSyntax, WorkqueueFifoHeadsSyntax, ContractDeclaredIdSyntax, KeyedMapSyntax, BareStructuralMappingSyntax, CalendarDaySyntax, TextSetSyntax, RefinedBase16Syntax]
 
 processReactionFeatureBody :: Text
 processReactionFeatureBody =
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+
 -- | Test driver for keiro-dsl. EP-1 milestone 1 tests: the @parse . pretty@
 -- round-trip property over generated specs, and a unit test pinning the shape
 -- of the canonical Reservation fixture.
@@ -25,10 +27,32 @@
 import Data.Text.IO qualified as TIO
 import Data.Text.Lazy qualified as LazyText
 import Data.Text.Lazy.Encoding qualified as LazyTextEncoding
+import Data.Time.Calendar (Day (ModifiedJulianDay), fromGregorian)
 import Data.Version (showVersion)
+import Data.Word (Word8)
+import Keiki.Core qualified as Keiki
 import Keiki.ProjectionDomain (matchesTextPattern)
+import Keiki.ProjectionDomain qualified as ProjectionDomain
+import Keiki.Symbolic qualified as KeikiSymbolic
 import Keiro.Codec (Codec (..), EventType (..), decodeRaw)
-import Keiro.Codec.IdDomain (IdDomainFailure (..), idDomainSampleText, idDomainTextPattern, parseKindIdV7Text, parseKindIdV7Value, typeIdV7Domain, validateIdDomainText)
+import Keiro.Codec.Base16Bytes
+  ( Base16BytesError (..),
+    base16BytesCodecPolicyIdentity,
+    decodeBase16BytesText,
+    encodeBase16Bytes,
+    parseBase16Bytes,
+    renderBase16Bytes,
+  )
+import Keiro.Codec.CalendarDay
+  ( calendarDayCodecPolicyIdentity,
+    encodeCalendarDay,
+    parseCalendarDay,
+    parseCalendarDayText,
+    parseCanonicalCalendarDayText,
+    renderCalendarDay,
+  )
+import Keiro.Codec.IdDomain (IdDomainFailure (..), idDomainSampleText, idDomainTextPattern, parseKindIdText, parseKindIdV7Text, parseKindIdV7Value, typeIdV5OrV7Domain, typeIdV7Domain, validateIdDomainText)
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet, textSetCodecPolicyIdentity)
 import Keiro.Dsl.AggregateType
 import Keiro.Dsl.BehaviorCoverage qualified as Behavior
 import Keiro.Dsl.BehaviorSourceMap qualified as BehaviorSource
@@ -54,7 +78,6 @@
 import Keiro.Dsl.GeneratedHaskellLanguage (RewriteState (..), modernizeGeneratedHaskellSourceWithState)
 import Keiro.Dsl.Goldens (GoldenEvidence (..), GoldenPayload (..), emitGoldenPayloads, goldenRelativePath, goldensForDiff)
 import Keiro.Dsl.Grammar
-import Keiro.Dsl.Grammar qualified as Grammar
 import Keiro.Dsl.Harness (harnessFor, harnessForService, harnessForWithGoldens, harnessReadModel, harnessRouter, harnessWorkflow)
 import Keiro.Dsl.HaskellImport
 import Keiro.Dsl.HaskellSourceMove
@@ -80,7 +103,6 @@
 import Keiro.Dsl.ScaffoldRun (GeneratedArtifactCategory (..), GeneratedArtifactImpact (..), GeneratedHaskellEditionImpact (..), GeneratedHaskellEditionUse (..), HoleUseForm (..), MappingDrift (..), QueryContractMigration (..), Refusal (..), ScaffoldReport (..), SourceLanguageDrift (..), StaleGeneratedEvidence (..), StaleModule (..), WriteDisposition (..), auditGeneratedHaskell, checkIndexedServiceDiagnostics, executeScaffold, executeScaffoldWithLanguage, executeServiceScaffold, executeServiceScaffoldWithRuntimePackage, executeServiceScaffoldWithRuntimePackageAndMigrations, executeServiceScaffoldWithRuntimePackageAndNameMigrations, planIndexedServiceScaffold, planIndexedServiceScaffoldWithRuntimePackage, planningRefusalDiagnostics, renderRefusals, renderScaffoldReport, renderSemanticImpactReport, scaffoldModules, scaffoldServiceModules)
 import Keiro.Dsl.SemanticContract
 import Keiro.Dsl.SemanticImpact
-import Keiro.Dsl.SemanticImpact qualified as SemanticImpact
 import Keiro.Dsl.ServiceHarness
 import Keiro.Dsl.SidecarMigration
 import Keiro.Dsl.SidecarNames
@@ -90,7 +112,6 @@
 import Keiro.Dsl.TypeGraph
 import Keiro.Dsl.Validate (Diagnostic (..), DiagnosticCode (..), Severity (..), derivedQueueTrio, diagnosticCodeText, parseDiagnosticCode, renderDiagnostic, validateService, validateSpec)
 import Keiro.Dsl.Workspace
-import Keiro.Dsl.Workspace qualified as Workspace
 import Keiro.Dsl.WorkspaceAdoption
 import Keiro.Dsl.WorkspaceDiff hiding (diffWorkspaces)
 import Keiro.Dsl.WorkspaceDiff qualified as CheckedWorkspaceDiff
@@ -107,6 +128,58 @@
 import Test.Hspec hiding (Spec)
 import Test.QuickCheck
 
+newtype AdmissionDomainOwner = AdmissionDomainOwner T.Text
+  deriving stock (Eq, Show)
+
+data WideAdmissionDomainText
+
+wideAdmissionDomainPattern :: ProjectionDomain.TextPattern
+wideAdmissionDomainPattern =
+  either (error . show) id (idDomainTextPattern (typeIdV5OrV7Domain "req"))
+
+instance Keiki.FieldProjection WideAdmissionDomainText where
+  type FieldName WideAdmissionDomainText = "id"
+  type FieldOwner WideAdmissionDomainText = AdmissionDomainOwner
+  type FieldResult WideAdmissionDomainText = T.Text
+  fieldShapeId _ = "keiro-dsl.test.id-domain.v5-or-v7"
+  projectFieldValue _ (AdmissionDomainOwner value) = value
+
+instance Keiki.ExactFieldProjection WideAdmissionDomainText where
+  fieldProjectionDomain _ = ProjectionDomain.textProjectionDomain wideAdmissionDomainPattern
+  reconstructFieldOwner _ value
+    | matchesTextPattern wideAdmissionDomainPattern value = Just (AdmissionDomainOwner value)
+    | otherwise = Nothing
+
+wideAdmissionDomainWitness :: Keiki.FieldWitness WideAdmissionDomainText
+wideAdmissionDomainWitness = Keiki.exactFieldWitness @WideAdmissionDomainText
+
+data StaleV7AdmissionDomainText
+
+staleV7AdmissionDomainPattern :: ProjectionDomain.TextPattern
+staleV7AdmissionDomainPattern =
+  either (error . show) id (idDomainTextPattern (typeIdV7Domain "req"))
+
+instance Keiki.FieldProjection StaleV7AdmissionDomainText where
+  type FieldName StaleV7AdmissionDomainText = "id"
+  type FieldOwner StaleV7AdmissionDomainText = AdmissionDomainOwner
+  type FieldResult StaleV7AdmissionDomainText = T.Text
+  fieldShapeId _ = "keiro-dsl.test.id-domain.stale-v7"
+  projectFieldValue _ (AdmissionDomainOwner value) = value
+
+instance Keiki.ExactFieldProjection StaleV7AdmissionDomainText where
+  fieldProjectionDomain _ = ProjectionDomain.textProjectionDomain staleV7AdmissionDomainPattern
+  reconstructFieldOwner _ value
+    | matchesTextPattern staleV7AdmissionDomainPattern value = Just (AdmissionDomainOwner value)
+    | otherwise = Nothing
+
+staleV7AdmissionDomainWitness :: Keiki.FieldWitness StaleV7AdmissionDomainText
+staleV7AdmissionDomainWitness = Keiki.exactFieldWitness @StaleV7AdmissionDomainText
+
+type AdmissionDomainRegisters = '[ '("owner", AdmissionDomainOwner)]
+
+admissionDomainOwnerIndex :: Keiki.Index AdmissionDomainRegisters AdmissionDomainOwner
+admissionDomainOwnerIndex = Keiki.ZIdx
+
 resolvedFold :: Either FoldSurfaceError value -> value
 resolvedFold = either (error . ("unexpected fold-surface failure in checked fixture: " <>) . show) id
 
@@ -171,6 +244,98 @@
   frontendSurfaceSpec
   frontendProfilesSpec
 
+  describe "calendar-day codec policy v1" $ do
+    it "pins the stable identity and Aeson-compatible full-carrier writer" $ do
+      calendarDayCodecPolicyIdentity `shouldBe` "keiro-core/calendar-day/1"
+      let vectors =
+            [ (fromGregorian 2000 2 29, "2000-02-29"),
+              (fromGregorian 0 1 2, "0000-01-02"),
+              (fromGregorian (-1) 12 31, "-0001-12-31"),
+              (fromGregorian (-1000) 1 1, "-1000-01-01"),
+              (fromGregorian 10000 1 1, "10000-01-01"),
+              (fromGregorian 1000000000000000 12 31, "1000000000000000-12-31")
+            ]
+      forM_ vectors $ \(value, expectedText) -> do
+        renderCalendarDay value `shouldBe` expectedText
+        encodeCalendarDay value `shouldBe` Aeson.toJSON value
+        parseCalendarDayText expectedText `shouldBe` Right value
+
+    it "accepts historical Aeson reader spellings and normalizes them" $ do
+      parseCalendarDayText "+2026-09-19" `shouldBe` Right (fromGregorian 2026 9 19)
+      parseCalendarDayText "02026-09-19" `shouldBe` Right (fromGregorian 2026 9 19)
+      parseCanonicalCalendarDayText "+2026-09-19" `shouldSatisfy` isLeft
+      parseCanonicalCalendarDayText "02026-09-19" `shouldSatisfy` isLeft
+      parseEither parseCalendarDay (Aeson.String "+2026-09-19")
+        `shouldBe` Right (fromGregorian 2026 9 19)
+
+    it "rejects invalid dates and non-string JSON" $ do
+      parseCalendarDayText "1900-02-29" `shouldSatisfy` isLeft
+      parseCalendarDayText "2026-02-30" `shouldSatisfy` isLeft
+      parseCalendarDayText "2026-2-03" `shouldSatisfy` isLeft
+      parseEither parseCalendarDay Aeson.Null `shouldSatisfy` isLeft
+
+    it "round-trips arbitrary Day values without a four-digit-year limit" $
+      property $ \modifiedJulianDay ->
+        let value = ModifiedJulianDay modifiedJulianDay
+         in parseCalendarDayText (renderCalendarDay value) == Right value
+
+  describe "text-set codec policy v1" $ do
+    it "pins the stable identity and Unicode code-point order" $ do
+      textSetCodecPolicyIdentity `shouldBe` "keiro-core/text-set/1"
+      let values = Set.fromList ["\x10000", "\xE000", "ä", "a\x0308", "a", "A"]
+          expected = ["A", "a", "a\x0308", "ä", "\xE000", "\x10000"] :: [T.Text]
+      encodeTextSet values `shouldBe` Aeson.toJSON expected
+      Aeson.encode (encodeTextSet values)
+        `shouldBe` Aeson.encode expected
+
+    it "normalizes permutations and duplicates before exposing the value" $ do
+      let nonCanonical = Aeson.toJSON (["b", "a", "a"] :: [T.Text])
+          canonical = Aeson.toJSON (["a", "b"] :: [T.Text])
+          expected = Set.fromList ["a", "b"]
+      parseEither parseTextSet nonCanonical `shouldBe` Right expected
+      parseEither parseTextSet canonical `shouldBe` Right expected
+      fmap encodeTextSet (parseEither parseTextSet nonCanonical) `shouldBe` Right canonical
+
+    it "rejects non-arrays and reports the index of non-string elements" $ do
+      parseEither parseTextSet Aeson.Null `shouldSatisfy` isLeft
+      case parseEither parseTextSet (Aeson.toJSON ([Aeson.String "a", Aeson.Number 1] :: [Value])) of
+        Left failure -> failure `shouldContain` "[1]"
+        Right value -> expectationFailure ("unexpected text set: " <> show value)
+
+    it "round-trips arbitrary text sets" $
+      property $ \values ->
+        let value = Set.fromList (map T.pack (values :: [String]))
+         in parseEither parseTextSet (encodeTextSet value) == Right value
+
+  describe "base16-bytes codec policy v1" $ do
+    it "pins the stable identity and canonical lowercase writer" $ do
+      base16BytesCodecPolicyIdentity `shouldBe` "keiro-core/base16-bytes/1"
+      renderBase16Bytes (BS.pack [0, 175, 255]) `shouldBe` "00afff"
+      encodeBase16Bytes (BS.pack [0, 175, 255]) `shouldBe` Aeson.String "00afff"
+
+    it "accepts case-insensitive historical spellings without changing decoded bytes" $ do
+      decodeBase16BytesText "00aF" `shouldBe` Right (BS.pack [0, 175])
+      decodeBase16BytesText "00af" `shouldBe` Right (BS.pack [0, 175])
+      fmap renderBase16Bytes (decodeBase16BytesText "00AF") `shouldBe` Right "00af"
+      parseEither parseBase16Bytes (Aeson.String "00aF") `shouldBe` Right (BS.pack [0, 175])
+
+    it "accepts empty, leading-zero, and unrestricted-length byte strings" $ do
+      decodeBase16BytesText "" `shouldBe` Right BS.empty
+      decodeBase16BytesText "00" `shouldBe` Right (BS.singleton 0)
+      decodeBase16BytesText "0011223344" `shouldBe` Right (BS.pack [0, 17, 34, 51, 68])
+
+    it "rejects odd length, prefixes, whitespace, non-hex digits, and non-string JSON" $ do
+      decodeBase16BytesText "0" `shouldBe` Left (Base16BytesOddLength 1)
+      decodeBase16BytesText "0x00" `shouldBe` Left (Base16BytesInvalidDigit 1 'x')
+      decodeBase16BytesText "gg" `shouldBe` Left (Base16BytesInvalidDigit 0 'g')
+      decodeBase16BytesText "00 af" `shouldBe` Left (Base16BytesOddLength 5)
+      parseEither parseBase16Bytes Aeson.Null `shouldSatisfy` isLeft
+
+    it "round-trips arbitrary bytes" $
+      property $ \bytes ->
+        let value = BS.pack (bytes :: [Word8])
+         in decodeBase16BytesText (renderBase16Bytes value) == Right value
+
   describe "mapped consumer surface" $ do
     it "parses and canonically round-trips Language 5 queue and query expressions as atomic forms" $ do
       source <- mappedConsumerSurfaceSource
@@ -1759,6 +1924,10 @@
         `shouldBe` sort
           [ "aggregate-collection-expressions-v2-rejects.keiro",
             "aggregate-scalar-expressions-v1-rejects.keiro",
+            "bare-containers.keiro",
+            "calendar-days.keiro",
+            "checked-mapping-replay-workspace/domain/service.keiro",
+            "checked-mapping-replay-workspace/domain/values.keiro",
             "catalog-readmodel-backing-required.keiro",
             "catalog-readmodel-backing-unobserved.keiro",
             "catalog-readmodel-physical-override.keiro",
@@ -1774,6 +1943,7 @@
             "direct-optional-id.keiro",
             "domain-command-outcomes.keiro",
             "hospital-surge-reactions.keiro",
+            "id-admission-domains.keiro",
             "id-domain-migration-v3.keiro",
             "intake-delegated.keiro",
             "language-duplicate.keiro",
@@ -1810,6 +1980,7 @@
             "projection-catalog-unrelated.keiro",
             "projection-catalog.keiro",
             "projection-owner-multi-query.keiro",
+            "refined-base16.keiro",
             "structural-nominal-leaves-enum-spelling.keiro",
             "structural-nominal-leaves-binding-change.keiro",
             "structural-nominal-leaves-keyed-map-key-change.keiro",
@@ -1817,6 +1988,7 @@
             "structural-nominal-leaves-prefix-change.keiro",
             "structural-nominal-leaves-text-to-nominal.keiro",
             "structural-nominal-leaves.keiro",
+            "structural-text-sets.keiro",
             "process-reactions-accepted-requires-event.keiro",
             "process-reactions-accepted-unverified.keiro",
             "process-reactions-badmapping.keiro",
@@ -2819,6 +2991,24 @@
       contractIdDomainContractFor v3Contract "req" `shouldBe` Nothing
       contractIdDomainContractFor v4Contract "req" `shouldBe` Just (typeIdV7Domain "req")
 
+    it "gates explicit admission syntax to language 6 and round-trips its checked choice" $ do
+      let explicitSource versionNumber =
+            T.unlines
+              [ "language keiro-dsl " <> T.pack (show versionNumber),
+                "context explicit-id-admission",
+                "id LegacyId prefix=legacy domain=typeid-v5-or-v7"
+              ]
+      parsed <- parseRight "explicit-id-admission-v6.keiro" (explicitSource (6 :: Int))
+      case (.ids) (checkedSpec (checkedSource parsed)) of
+        [declaration] -> (.admission) declaration `shouldBe` TypeIdV5OrV7
+        declarations -> expectationFailure ("expected one ID declaration, got " <> show (length declarations))
+      parseSource "explicit-id-admission-round-trip.keiro" (renderSource parsed) `shouldBe` Right parsed
+      parseSource "explicit-id-admission-v5.keiro" (explicitSource (5 :: Int))
+        `shouldSatisfy` \case
+          Left (SourceLanguageFailure diagnostic) -> (.errorCode) diagnostic == LanguageFeatureRequiresVersion
+          Left _ -> False
+          Right _ -> False
+
     it "constructs typed KindIDs only after the frozen four-way admission policy" $ do
       let valid = "req_01h455vb4pex5vsknk084sn02q"
           uppercase = "req_01H455VB4PEX5VSKNK084SN02Q"
@@ -2839,6 +3029,26 @@
           Left problem -> "not canonical lowercase" `T.isInfixOf` T.pack problem
           Right _ -> False
 
+    it "admits canonical UUIDv5 and UUIDv7 only through the explicit wider domain" $ do
+      let v5 = "req_58kj0y515rbwebzaxwzzknjqnk"
+          v7 = "req_01h455vb4pex5vsknk084sn02q"
+          wide = typeIdV5OrV7Domain "req"
+      validateIdDomainText wide v5 `shouldBe` Right ()
+      validateIdDomainText wide v7 `shouldBe` Right ()
+      validateIdDomainText (typeIdV7Domain "req") v5 `shouldSatisfy` \case
+        Left IdDomainNotUuidV7 {} -> True
+        _ -> False
+      (KindID.toText @"req" <$> parseKindIdText @"req" wide v5) `shouldBe` Right v5
+      parseKindIdText @"other" wide v5 `shouldBe` Left (IdDomainWrongPrefix "other" "req")
+      let excludedVersion = T.take 14 v5 <> "c" <> T.drop 15 v5
+          excludedVariant = T.take 17 v5 <> "c" <> T.drop 18 v5
+      validateIdDomainText wide excludedVersion `shouldSatisfy` \case
+        Left IdDomainVersionNotAdmitted {} -> True
+        _ -> False
+      validateIdDomainText wide excludedVariant `shouldSatisfy` \case
+        Left IdDomainVariantNotRfc4122 {} -> True
+        _ -> False
+
     it "validates contract TypeID prefixes only at the language-4 boundary" $ do
       let source versionNumber =
             T.unlines
@@ -2932,6 +3142,106 @@
               : [counterexample (T.unpack invalid) (isLeft (validateIdDomainText contract invalid) && not (matchesTextPattern patternValue invalid)) | invalid <- invalidValues]
           )
 
+    it "keeps each runtime validator exactly equal to its symbolic text domain" $ property $ do
+      let crockford = "0123456789abcdefghjkmnpqrstvwxyz"
+          segment count = vectorOf count (elements crockford)
+      leading <- elements "01234567"
+      beforeVersion <- segment 9
+      version <- elements crockford
+      beforeVariant <- segment 2
+      variantDigit <- elements crockford
+      afterVariant <- segment 12
+      let value = T.pack ("req_" <> [leading] <> beforeVersion <> [version] <> beforeVariant <> [variantDigit] <> afterVariant)
+          contracts = [typeIdV7Domain "req", typeIdV5OrV7Domain "req"]
+          agrees contract =
+            let patternValue = either (error . show) id (idDomainTextPattern contract)
+             in isRight (validateIdDomainText contract value) == matchesTextPattern patternValue value
+      pure (conjoin [counterexample (show contract <> " disagreed on " <> T.unpack value) (agrees contract) | contract <- contracts])
+
+    it "exposes a stale v7-only witness for a UUIDv5-reachable declaration" $ do
+      let v5 = "req_58kj0y515rbwebzaxwzzknjqnk"
+          widePattern = either (error . show) id (idDomainTextPattern (typeIdV5OrV7Domain "req"))
+          stalePattern = either (error . show) id (idDomainTextPattern (typeIdV7Domain "req"))
+      validateIdDomainText (typeIdV5OrV7Domain "req") v5 `shouldBe` Right ()
+      matchesTextPattern widePattern v5 `shouldBe` True
+      matchesTextPattern stalePattern v5 `shouldBe` False
+
+    it "keeps v5-only guard overlap visible and proof-unknown paths conservative" $ do
+      let v5 = "req_58kj0y515rbwebzaxwzzknjqnk"
+          owner = AdmissionDomainOwner v5
+          projected = Keiki.regProj wideAdmissionDomainWitness admissionDomainOwnerIndex
+          v5Guard = Keiki.PEq projected (Keiki.TLit v5)
+          opaqueV5Guard = Keiki.PEq (Keiki.TApp1 id projected) (Keiki.TLit v5)
+      Keiki.checkFieldProjectionOwner wideAdmissionDomainWitness owner `shouldBe` Right ()
+      Keiki.checkFieldProjectionKey wideAdmissionDomainWitness v5 `shouldBe` Right owner
+      Keiki.checkFieldProjectionOwner staleV7AdmissionDomainWitness owner
+        `shouldBe` Left Keiki.ProjectedKeyOutsideDeclaredDomain
+      KeikiSymbolic.verifyPredicate (Keiki.PAnd v5Guard v5Guard)
+        `shouldReturn` KeikiSymbolic.VerifiedSatisfiable
+      KeikiSymbolic.verifyPredicate (Keiki.PAnd v5Guard opaqueV5Guard)
+        `shouldReturn` KeikiSymbolic.UnverifiedOpaque
+
+    it "marks direct and nested admission changes replay-affected in both directions" $ do
+      let declaration TypeIdV7 = "id EntityId prefix=entity"
+          declaration TypeIdV5OrV7 = "id EntityId prefix=entity domain=typeid-v5-or-v7"
+          directSource admission =
+            T.unlines
+              [ "language keiro-dsl 6",
+                "context direct-id-admission",
+                declaration admission,
+                "aggregate EntityLedger",
+                "  regs",
+                "    current EntityId = placeholder",
+                "  states Open",
+                "  command Record { entityId:EntityId }",
+                "  event Recorded = fields(Record)",
+                "  Open -- Record --> write current := cmd.entityId ; emit Recorded ; goto Open"
+              ]
+          nestedSource admission =
+            T.unlines
+              [ "language keiro-dsl 6",
+                "context nested-id-admission",
+                declaration admission,
+                "mapped structural record EntityEnvelope {",
+                "  haskell package=example module=Example.Entity type=EntityEnvelope",
+                "  binding = \"Example.Entity.entityEnvelopeBinding\"",
+                "  binding-version = \"1\"",
+                "  canonical-type = \"example.EntityEnvelope.v1\"",
+                "  fixtures = \"Example.Entity.entityEnvelopeFixtures\"",
+                "  wire object constructor=EntityEnvelope unknown-fields=reject {",
+                "    entityId as \"entityId\" : EntityId required",
+                "  }",
+                "}",
+                "aggregate EntityLedger",
+                "  regs",
+                "  states Open",
+                "  command Record { envelope:EntityEnvelope }",
+                "  event Recorded = fields(Record)",
+                "  Open -- Record --> emit Recorded ; goto Open"
+              ]
+          checked name source = checkedSource <$> parseRight name source
+          assertChanged oldService newService expectedDetail = do
+            validateService oldService `shouldBe` []
+            validateService newService `shouldBe` []
+            let oldAggregate = onlyAggregate (checkedSpec oldService)
+                newAggregate = onlyAggregate (checkedSpec newService)
+                findings = [kindOfChange change | change <- diffServices oldService newService, changeCode change == IdDomainContractChanged]
+            aggregateFoldFingerprintForService oldService oldAggregate
+              `shouldNotBe` aggregateFoldFingerprintForService newService newAggregate
+            resolvedFold (ReplayImpact.replayImpactServices oldService newService) `shouldSatisfy` \case
+              ReplayImpact.ReplayAffected impacts -> Map.member "EntityLedger" impacts
+              ReplayImpact.ReplayNeutral -> False
+            findings `shouldSatisfy` (not . null)
+            map (.detail) findings `shouldSatisfy` any (T.isInfixOf expectedDetail)
+      directV7 <- checked "direct-id-v7.keiro" (directSource TypeIdV7)
+      directWide <- checked "direct-id-wide.keiro" (directSource TypeIdV5OrV7)
+      nestedV7 <- checked "nested-id-v7.keiro" (nestedSource TypeIdV7)
+      nestedWide <- checked "nested-id-wide.keiro" (nestedSource TypeIdV5OrV7)
+      assertChanged directV7 directWide "old-reader/new-writer hazard"
+      assertChanged directWide directV7 "retained UUIDv5 history may stop decoding"
+      assertChanged nestedV7 nestedWide "old-reader/new-writer hazard"
+      assertChanged nestedWide nestedV7 "retained UUIDv5 history may stop decoding"
+
     it "enforces the same contract before consumer binding conversion and explains its version" $ do
       v2Source <- readTestText "test/fixtures/nominal-scalars.keiro"
       let v3Text = T.replace "language keiro-dsl 2" "language keiro-dsl 3" v2Source
@@ -4419,6 +4729,429 @@
           nodes -> expectationFailure ("unexpected node sequence: " <> show (map nodeTag nodes))
 
   describe "mapped types (EP-149)" $ do
+    it "preserves missing-key semantics when an event's only checked mapping is a bare optional value" $ do
+      service <-
+        checkedServiceFromText
+          "<bare-optional-event>"
+          ( T.unlines
+              [ "language keiro-dsl 6",
+                "context bare-optional-event",
+                "",
+                "mapped structural value MaybeText {",
+                "  haskell package=consumer module=Consumer.Domain type=MaybeText",
+                "  binding = \"Consumer.Bindings.maybeTextBinding\"",
+                "  binding-version = \"1\"",
+                "  canonical-type = \"consumer.MaybeText.v1\"",
+                "  fixtures = \"Consumer.Bindings.maybeTextFixtures\"",
+                "  initial = \"Consumer.Bindings.initialMaybeText\"",
+                "  wire Optional Text",
+                "}",
+                "",
+                "aggregate Reminder",
+                "  regs",
+                "    current MaybeText = initial",
+                "  states Empty Stored!",
+                "",
+                "  command Store { actor:MaybeText }",
+                "  event StoredValue = fields(Store)",
+                "",
+                "  Empty -- Store -->",
+                "    write current := actor",
+                "    emit StoredValue",
+                "    goto Stored",
+                "",
+                "  wire kind=ctorName fields=camelCase schemaVersion=1"
+              ]
+          )
+      let codec =
+            generatedTextEndingIn
+              "Reminder/Codec.hs"
+              (scaffoldServiceModules (defaultContext "bare-optional-event") service)
+      codec `shouldSatisfy` T.isInfixOf "import Data.Aeson.Types (Parser, explicitParseField, parseEither)"
+      codec `shouldSatisfy` T.isInfixOf "parseOptionalField (parseMaybeTextMapped Null) parseMaybeTextMapped o \"actor\""
+
+    it "admits calendar days only in the candidate profile and freezes their wire policy" $ do
+      source <- readTestText "test/fixtures/calendar-days.keiro"
+      service <- checkedServiceFromText "test/fixtures/calendar-days.keiro" source
+      let spec = checkedSpec service
+          bareShapes = [(name, shape) | MappedStructural {msName = name, msShape = shape@ShapeBare {}} <- (.mapped) spec]
+      bareShapes `shouldContain` [("LocalDay", ShapeBare TDay), ("MaybeLocalDay", ShapeBare (TOptional TDay))]
+      runtimeProfileHasCapability ((.runtimeProfile) (checkedLanguageContract service)) CalendarDayMappings `shouldBe` True
+      capabilityFoldSegment CalendarDayMappings `shouldBe` Nothing
+      graph <- shouldResolveTypeGraph spec
+      wireFingerprintForCalendarDayPolicy calendarDayCodecPolicyIdentity graph "LocalDay"
+        `shouldBe` wireFingerprint graph "LocalDay"
+      wireFingerprintForCalendarDayPolicy "keiro-core/calendar-day/2" graph "LocalDay"
+        `shouldNotBe` wireFingerprint graph "LocalDay"
+      case parseSource "<calendar-days-language-5>" (T.replace "language keiro-dsl 6" "language keiro-dsl 5" source) of
+        Left (SourceLanguageFailure diagnostic) -> (.errorCode) diagnostic `shouldBe` LanguageFeatureRequiresVersion
+        result -> expectationFailure ("expected calendar-day language refusal, got " <> show result)
+
+    it "classifies Text-to-Day and Time-to-Day mapped changes as replay-affected" $ do
+      daySpec <- specOf "test/fixtures/calendar-days.keiro"
+      let withPrimary replacement =
+            specWithMapped
+              [ rewrite declaration
+              | declaration <- daySpec.mapped
+              ]
+              daySpec
+            where
+              rewrite declaration@MappedStructural {msName = "CalendarEnvelope", msShape = ShapeRecord constructor unknown fields} =
+                declaration
+                  { msShape =
+                      ShapeRecord
+                        constructor
+                        unknown
+                        [ if field.haskell == "primary" then field {valueType = replacement} else field
+                        | field <- fields
+                        ]
+                  }
+              rewrite declaration = declaration
+          assertAffected oldSpec = replayImpactSpecs oldSpec daySpec `shouldSatisfy` (/= ReplayNeutral)
+      assertAffected (withPrimary TText)
+      assertAffected (withPrimary TTime)
+
+    it "admits refined base16 bytes only in the candidate profile and freezes their distinct wire policy" $ do
+      source <- readTestText "test/fixtures/refined-base16.keiro"
+      parsed <- parsedSourceOf "test/fixtures/refined-base16.keiro"
+      let service = checkedSource parsed
+      let spec = checkedSpec service
+          refined = [(name, policy) | MappedRefined {mrName = name, mrPolicy = policy} <- (.mapped) spec]
+      refined `shouldContain` [("ContentHash", Base16BytesV1)]
+      parseSource "<refined-base16-roundtrip>" (renderSource parsed) `shouldBe` Right parsed
+      runtimeProfileHasCapability ((.runtimeProfile) (checkedLanguageContract service)) RefinedBase16Mappings `shouldBe` True
+      capabilityFoldSegment RefinedBase16Mappings `shouldBe` Nothing
+      graph <- shouldResolveTypeGraph spec
+      wireFingerprintForBase16BytesPolicy base16BytesCodecPolicyIdentity graph "ContentHash"
+        `shouldBe` wireFingerprint graph "ContentHash"
+      wireFingerprintForBase16BytesPolicy "keiro-core/base16-bytes/2" graph "ContentHash"
+        `shouldNotBe` wireFingerprint graph "ContentHash"
+      case parseSource "<refined-base16-language-5>" (T.replace "language keiro-dsl 6" "language keiro-dsl 5" source) of
+        Left (SourceLanguageFailure diagnostic) -> (.errorCode) diagnostic `shouldBe` LanguageFeatureRequiresVersion
+        result -> expectationFailure ("expected refined base16 language refusal, got " <> show result)
+
+    it "plans refined base16 ByteString codecs across nested aggregate, queue, query, and manifest surfaces" $ do
+      service <- checkedServiceOf "test/fixtures/refined-base16.keiro"
+      let modules = scaffoldServiceModules (defaultContext "refined-base16") service
+          refinedShape = generatedTextEndingIn "Structural/Shape/ContentHash.hs" modules
+          envelopeShape = generatedTextEndingIn "Structural/Shape/HashEnvelope.hs" modules
+          aggregateCodec = generatedTextEndingIn "HashStore/Codec.hs" modules
+          queue = generatedTextEndingIn "HashJobs/Queue.hs" modules
+          queryContract = generatedTextEndingIn "HashLookup/QueryContract.hs" modules
+      refinedShape `shouldSatisfy` T.isInfixOf "type ContentHashShape = ByteString"
+      envelopeShape `shouldSatisfy` T.isInfixOf "primary :: !ContentHash.ContentHashShape"
+      aggregateCodec `shouldSatisfy` T.isInfixOf "import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)"
+      queue `shouldSatisfy` T.isInfixOf "encodeBase16Bytes"
+      queryContract `shouldSatisfy` T.isInfixOf "type HashLookupQueryInput = MaybeContentHash"
+      manifestDependenciesForService service
+        `shouldBe` ["aeson", "base", "bytestring", "containers", "effectful-core", "hasql-transaction", "keiki", "keiro", "keiro-core", "keiro-dsl", "keiro-pgmq", "kiroku-store", "text"]
+
+    it "classifies nominal-Text-to-refined, opaque-to-refined, and policy changes as replay-affected" $ do
+      source <- readTestText "test/fixtures/refined-base16.keiro"
+      refinedService <- checkedServiceFromText "refined-base16.keiro" source
+      nominalService <-
+        checkedServiceFromText
+          "refined-base16-nominal.keiro"
+          ( T.replace
+              "mapped refined ContentHash {"
+              "mapped nominal ContentHash : Text {"
+              (T.replace "  wire base16-bytes\n" "" source)
+          )
+      let refinedSpec = checkedSpec refinedService
+          nominalSpec = checkedSpec nominalService
+          opaque =
+            MappedOpaque
+              { moName = "ContentHash",
+                moHaskell = Just (HaskellSource "keiro-dsl" "Conformance.RefinedBase16.Domain" "ContentHash"),
+                moCodecId = Just "conformance.refined-base16.ContentHash.opaque",
+                moCodecVersion = Just "1",
+                moFixtures = Just "Conformance.RefinedBase16.Bindings.contentHashFixtures",
+                moInitial = Just "Conformance.RefinedBase16.Bindings.initialContentHash",
+                moLoc = noLoc
+              }
+          opaqueSpec =
+            specWithMapped
+              (opaque : [declaration | declaration <- refinedSpec.mapped, mappedDeclarationName declaration /= "ContentHash"])
+              refinedSpec
+      replayImpactSpecs nominalSpec refinedSpec `shouldSatisfy` (/= ReplayNeutral)
+      replayImpactSpecs opaqueSpec refinedSpec `shouldSatisfy` (/= ReplayNeutral)
+      graph <- shouldResolveTypeGraph refinedSpec
+      wireFingerprintForBase16BytesPolicy "keiro-core/base16-bytes/2" graph "ContentHash"
+        `shouldNotBe` wireFingerprint graph "ContentHash"
+
+    it "rejects refined base16 callbacks, length options, map keys, symbolic operations, and public-contract use" $ do
+      source <- readTestText "test/fixtures/refined-base16.keiro"
+      parseSource "<refined-base16-length>" (T.replace "wire base16-bytes" "wire base16-bytes length=32" source)
+        `shouldSatisfy` isLeft
+      parseSource "<refined-base16-callback>" (T.replace "wire base16-bytes" "wire custom Example.decodeHash" source)
+        `shouldSatisfy` isLeft
+      keyed <-
+        checkedServiceFromText
+          "<refined-base16-keyed-map>"
+          (T.replace "Map ContentHash required" "Map[ContentHash] Text required" source)
+      case resolveTypeGraph (checkedSpec keyed) of
+        Left errors ->
+          toList errors
+            `shouldSatisfy` any (\case TGUnsupportedNominalLeaf _ "ContentHash" "mapped map key" _ -> True; _ -> False)
+        Right _ -> expectationFailure "expected mapped refined map key refusal"
+      symbolic <-
+        checkedServiceFromText
+          "<refined-base16-symbolic>"
+          (T.replace "  Empty -- StoreHash -->\n" "  Empty -- StoreHash -->\n    guard cmd.hash == cmd.hash\n" source)
+      map (.code) (validateSpec (checkedSpec symbolic)) `shouldContain` [AggregateExpressionOperatorUnsupported]
+      publicContract <-
+        checkedServiceFromText
+          "<refined-base16-contract>"
+          ( source
+              <> T.unlines
+                [ "contract public_hashes {",
+                  "  schemaVersion 1",
+                  "  discriminator kind",
+                  "  topic events \"public.hashes\"",
+                  "  event HashPublished on events { hash: ContentHash }",
+                  "}"
+                ]
+          )
+      map (.code) (validateSpec (checkedSpec publicContract)) `shouldContain` [ContractIdUnknown]
+
+    it "admits structural text sets only in the candidate profile and freezes their distinct wire policy" $ do
+      source <- readTestText "test/fixtures/structural-text-sets.keiro"
+      service <- checkedServiceFromText "test/fixtures/structural-text-sets.keiro" source
+      let spec = checkedSpec service
+          bareShapes = [(name, shape) | MappedStructural {msName = name, msShape = shape@ShapeBare {}} <- (.mapped) spec]
+      bareShapes
+        `shouldContain` [ ("TextLabels", ShapeBare TTextSet),
+                          ("MaybeTextLabels", ShapeBare (TOptional TTextSet))
+                        ]
+      runtimeProfileHasCapability ((.runtimeProfile) (checkedLanguageContract service)) TextSetMappings `shouldBe` True
+      capabilityFoldSegment TextSetMappings `shouldBe` Nothing
+      graph <- shouldResolveTypeGraph spec
+      wireFingerprintForTextSetPolicy textSetCodecPolicyIdentity graph "TextLabels"
+        `shouldBe` wireFingerprint graph "TextLabels"
+      wireFingerprintForTextSetPolicy "keiro-core/text-set/2" graph "TextLabels"
+        `shouldNotBe` wireFingerprint graph "TextLabels"
+      let listSpec =
+            specWithMapped
+              [ case declaration of
+                  value@MappedStructural {msName = "TextLabels"} -> value {msShape = ShapeBare (TList TText)}
+                  value -> value
+              | declaration <- spec.mapped
+              ]
+              spec
+      listGraph <- shouldResolveTypeGraph listSpec
+      wireFingerprint graph "TextLabels" `shouldNotBe` wireFingerprint listGraph "TextLabels"
+      case parseSource "<structural-text-sets-language-5>" (T.replace "language keiro-dsl 6" "language keiro-dsl 5" source) of
+        Left (SourceLanguageFailure diagnostic) -> (.errorCode) diagnostic `shouldBe` LanguageFeatureRequiresVersion
+        result -> expectationFailure ("expected structural text-set language refusal, got " <> show result)
+
+    it "plans Set Text imports and generated codecs across aggregate, queue, query, and manifest surfaces" $ do
+      service <- checkedServiceOf "test/fixtures/structural-text-sets.keiro"
+      graph <- shouldResolveTypeGraph (checkedSpec service)
+      let modules = scaffoldServiceModules (defaultContext "structural-text-sets") service
+          shape = generatedTextEndingIn "Structural/Shape/LabelEnvelope.hs" modules
+          aggregateCodec = generatedTextEndingIn "LabelStore/Codec.hs" modules
+          queue = generatedTextEndingIn "LabelJobs/Queue.hs" modules
+          queryContract = generatedTextEndingIn "LabelLookup/QueryContract.hs" modules
+      case planConsumerType graph RTextSet of
+        Left problem -> expectationFailure (show problem)
+        Right planned -> do
+          unHaskellTypeOccurrence planned.haskellType `shouldBe` "Set Text"
+          planned.imports
+            `shouldBe` [ ImportRequirement "containers" "Data.Set" "Set",
+                         ImportRequirement "text" "Data.Text" "Text"
+                       ]
+      shape `shouldSatisfy` T.isInfixOf "import Data.Set (Set)"
+      shape `shouldSatisfy` T.isInfixOf "primary :: !(Set Text)"
+      aggregateCodec `shouldSatisfy` T.isInfixOf "import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)"
+      queue `shouldSatisfy` T.isInfixOf "encodeTextSet"
+      queryContract `shouldSatisfy` T.isInfixOf "type LabelLookupQueryInput = MaybeTextLabels"
+      manifestDependenciesForService service
+        `shouldBe` ["aeson", "base", "containers", "effectful-core", "hasql-transaction", "keiki", "keiro", "keiro-core", "keiro-dsl", "keiro-pgmq", "kiroku-store", "text"]
+
+    it "classifies List-to-Set, Set-to-List, opaque-to-Set, and policy changes as replay-affected" $ do
+      setSpec <- specOf "test/fixtures/structural-text-sets.keiro"
+      let withTextLabels replacement =
+            specWithMapped
+              [ case declaration of
+                  value@MappedStructural {msName = "TextLabels"} -> value {msShape = ShapeBare replacement}
+                  value -> value
+              | declaration <- setSpec.mapped
+              ]
+              setSpec
+          listSpec = withTextLabels (TList TText)
+          opaque =
+            MappedOpaque
+              { moName = "TextLabels",
+                moHaskell = Just (HaskellSource "keiro-dsl" "Conformance.StructuralTextSets.Domain" "TextLabels"),
+                moCodecId = Just "conformance.structural-text-sets.TextLabels.opaque",
+                moCodecVersion = Just "1",
+                moFixtures = Just "Conformance.StructuralTextSets.Bindings.textLabelsFixtures",
+                moInitial = Just "Conformance.StructuralTextSets.Bindings.initialTextLabels",
+                moLoc = noLoc
+              }
+          opaqueSpec =
+            specWithMapped
+              (opaque : [declaration | declaration <- setSpec.mapped, mappedDeclarationName declaration /= "TextLabels"])
+              setSpec
+      replayImpactSpecs listSpec setSpec `shouldSatisfy` (/= ReplayNeutral)
+      replayImpactSpecs setSpec listSpec `shouldSatisfy` (/= ReplayNeutral)
+      replayImpactSpecs opaqueSpec setSpec `shouldSatisfy` (/= ReplayNeutral)
+      graph <- shouldResolveTypeGraph setSpec
+      wireFingerprintForTextSetPolicy "keiro-core/text-set/2" graph "TextLabels"
+        `shouldNotBe` wireFingerprint graph "TextLabels"
+
+    it "rejects direct aggregate Set Text fields with located guidance" $ do
+      direct <-
+        parseInlineSpec
+          "<direct-text-set>"
+          ( T.unlines
+              [ "language keiro-dsl 6",
+                "context direct-text-set",
+                "aggregate Labels",
+                "  regs",
+                "  states Open",
+                "  command Record { labels:Set Text }",
+                "  event Recorded = fields(Record)",
+                "  Open -- Record --> emit Recorded ; goto Open",
+                "  wire kind=ctorName fields=camelCase schemaVersion=1"
+              ]
+          )
+      let directErrors = [diagnostic | diagnostic <- validateSpec direct, (.severity) diagnostic == Error]
+      map (.code) directErrors `shouldContain` [AggregateTypeUnsupportedAtUse]
+      map (.message) directErrors `shouldSatisfy` any (T.isInfixOf "Set(Text)")
+      symbolic <-
+        parseInlineSpec
+          "<symbolic-text-set>"
+          ( T.unlines
+              [ "language keiro-dsl 6",
+                "context symbolic-text-set",
+                "mapped structural value TextLabels {",
+                "  haskell package=example module=Example.Domain type=TextLabels",
+                "  binding = \"Example.Bindings.textLabelsBinding\"",
+                "  binding-version = \"1\"",
+                "  canonical-type = \"example.TextLabels.v1\"",
+                "  fixtures = \"Example.Bindings.textLabelsFixtures\"",
+                "  wire Set Text",
+                "}",
+                "aggregate Labels",
+                "  regs",
+                "  states Open",
+                "  command Record { labels:TextLabels }",
+                "  event Recorded = fields(Record)",
+                "  Open -- Record --> guard cmd.labels == cmd.labels ; emit Recorded ; goto Open",
+                "  wire kind=ctorName fields=camelCase schemaVersion=1"
+              ]
+          )
+      map (.code) (validateSpec symbolic) `shouldContain` [AggregateExpressionOperatorUnsupported]
+
+    it "rejects direct aggregate and nominal Day shapes with located guidance" $ do
+      direct <-
+        parseInlineSpec
+          "<direct-day>"
+          ( T.unlines
+              [ "language keiro-dsl 6",
+                "context direct-day",
+                "aggregate Calendar",
+                "  regs",
+                "  states Open",
+                "  command Record { day:Day }",
+                "  event Recorded = fields(Record)",
+                "  Open -- Record --> emit Recorded ; goto Open",
+                "  wire kind=ctorName fields=camelCase schemaVersion=1"
+              ]
+          )
+      let directErrors = [diagnostic | diagnostic <- validateSpec direct, (.severity) diagnostic == Error]
+      map (.code) directErrors `shouldContain` [AggregateTypeUnsupportedAtUse]
+      map (.message) directErrors `shouldSatisfy` any (T.isInfixOf "wire Day")
+      nominal <-
+        parseInlineSpec
+          "<nominal-day>"
+          ( T.unlines
+              [ "language keiro-dsl 6",
+                "context nominal-day",
+                "mapped nominal Birthday : Day {",
+                "  haskell package=example module=Example.Domain type=Birthday",
+                "  binding = \"Example.Bindings.birthdayBinding\"",
+                "  binding-version = \"1\"",
+                "  canonical-type = \"example.Birthday.v1\"",
+                "  fixtures = \"Example.Bindings.birthdayFixtures\"",
+                "}"
+              ]
+          )
+      map (.code) (validateSpec nominal) `shouldContain` [NominalUnsupportedRepresentation]
+
+    it "round-trips candidate bare container mappings and gates their declaration kind" $ do
+      source <- readTestText "test/fixtures/bare-containers.keiro"
+      parsed <- checkedServiceFromText "test/fixtures/bare-containers.keiro" source
+      let spec = checkedSpec parsed
+          bareShapes = [shape | MappedStructural {msShape = shape@ShapeBare {}} <- (.mapped) spec]
+      bareShapes
+        `shouldBe` [ ShapeBare (TOptional TText),
+                     ShapeBare (TList TText),
+                     ShapeBare (TMap TText),
+                     ShapeBare (TList (TOptional (TRef "ItemId")))
+                   ]
+      case parseSource "<bare-containers-round-trip>" ("language keiro-dsl 6\n" <> renderSpec spec) of
+        Left failure -> expectationFailure (T.unpack (renderParseFailure failure))
+        Right reparsed -> reparsed.spec `shouldBe` spec
+      case parseSource "<bare-containers-language-5>" (T.replace "language keiro-dsl 6" "language keiro-dsl 5" source) of
+        Left (SourceLanguageFailure diagnostic) -> (.errorCode) diagnostic `shouldBe` LanguageFeatureRequiresVersion
+        result -> expectationFailure ("expected bare-mapping language refusal, got " <> show result)
+    it "derives nullability and on-missing defaults through bare aliases" $ do
+      let maybeText = completeStructural "MaybeText" (ShapeBare (TOptional TText))
+          listText = completeStructural "TextList" (ShapeBare (TList TText))
+          mapText = completeStructural "TextMap" (ShapeBare (TMap TText))
+          validEnvelope =
+            completeStructural
+              "Envelope"
+              ( ShapeRecord
+                  "Envelope"
+                  RejectUnknown
+                  [ WireField "label" "label" (TRef "MaybeText") POptional (Just OmNull) noLoc,
+                    WireField "labels" "labels" (TRef "TextList") POptional (Just OmEmptyList) noLoc,
+                    WireField "attributes" "attributes" (TRef "TextMap") POptional (Just OmEmptyMap) noLoc
+                  ]
+              )
+          nullableAlias = completeStructural "NullableAlias" (ShapeBare (TOptional (TRef "MaybeText")))
+          nestedNullable = completeStructural "NestedNullable" (ShapeBare (TOptional (TOptional TText)))
+          invalidDefault =
+            completeStructural
+              "InvalidDefault"
+              (ShapeRecord "InvalidDefault" RejectUnknown [WireField "labels" "labels" (TRef "TextList") POptional (Just OmNull) noLoc])
+      errorCodes (mappedSpec [maybeText, listText, mapText, validEnvelope]) `shouldBe` []
+      errorCodes (mappedSpec [maybeText, nullableAlias]) `shouldContain` [MappedNonInjectiveNullability]
+      errorCodes (mappedSpec [nestedNullable]) `shouldContain` [MappedNonInjectiveNullability]
+      errorCodes (mappedSpec [listText, invalidDefault]) `shouldContain` [MappedDefaultIllTyped]
+    it "lowers bare shapes without an object wrapper and preserves wire identity on alias extraction" $ do
+      service <- checkedServiceOf "test/fixtures/bare-containers.keiro"
+      let spec = checkedSpec service
+          modules = scaffoldModules (defaultContext (spec.context)) spec
+          maybeShape = generatedTextEndingIn "Structural/Shape/MaybeText.hs" modules
+          codec = generatedTextEndingIn "BareStore/Codec.hs" modules
+      maybeShape `shouldSatisfy` T.isInfixOf "type MaybeTextShape = (Maybe Text)"
+      maybeShape `shouldNotSatisfy` T.isInfixOf "data MaybeTextShape"
+      codec `shouldSatisfy` T.isInfixOf "encodeMaybeTextShape value = maybe Null"
+      codec `shouldSatisfy` T.isInfixOf "parseMaybeTextShape = \\value0 -> case value0 of Null -> pure Nothing"
+      let inlineEnvelope = completeStructural "Envelope" (recordShape [TOptional TText])
+          alias = completeStructural "MaybeText" (ShapeBare (TOptional TText))
+          aliasedEnvelope = completeStructural "Envelope" (recordShape [TRef "MaybeText"])
+          opaqueAlias =
+            MappedOpaque
+              { moName = "MaybeText",
+                moHaskell = Just (HaskellSource "mapped-test" "Example.Mapped" "MaybeText"),
+                moCodecId = Just "example.maybe-text",
+                moCodecVersion = Just "1",
+                moFixtures = Just "Example.Mapped.maybeTextCases",
+                moInitial = Nothing,
+                moLoc = noLoc
+              }
+      inlineGraph <- shouldResolveTypeGraph (mappedSpec [inlineEnvelope])
+      aliasGraph <- shouldResolveTypeGraph (mappedSpec [alias, aliasedEnvelope])
+      opaqueGraph <- shouldResolveTypeGraph (mappedSpec [opaqueAlias])
+      wrappedGraph <- shouldResolveTypeGraph (mappedSpec [completeStructural "MaybeText" (recordShape [TOptional TText])])
+      wireFingerprint inlineGraph "Envelope" `shouldBe` wireFingerprint aliasGraph "Envelope"
+      wireFingerprint aliasGraph "MaybeText" `shouldNotBe` wireFingerprint opaqueGraph "MaybeText"
+      wireFingerprint aliasGraph "MaybeText" `shouldNotBe` wireFingerprint wrappedGraph "MaybeText"
     it "round-trips the canonical structural and opaque consumer fixture" $ do
       source <- TIO.readFile "test/fixtures/consumer-types.keiro"
       spec <- parseInlineSpec "test/fixtures/consumer-types.keiro" source
@@ -4561,7 +5294,7 @@
               AggregateBool,
               AggregateTime,
               AggregateNatural,
-              AggregateNominal (ResolvedNominalType "EntityId" (IdRepresentation "ent") GeneratedNominal noLoc),
+              AggregateNominal (ResolvedNominalType "EntityId" (IdRepresentation "ent" TypeIdV7) GeneratedNominal noLoc),
               AggregateNominal (ResolvedNominalType "Status" (EnumRepresentation (("Active", "active") :| [])) GeneratedNominal noLoc),
               AggregateNominal (ResolvedNominalType "Amount" (ScalarRepresentation NominalInt) (consumerNominalFor "Amount") noLoc),
               AggregateNominal (ResolvedNominalType "Label" (ScalarRepresentation NominalText) (consumerNominalFor "Label") noLoc),
@@ -4749,7 +5482,7 @@
     it "resolves existing ids and enums as nominal leaves" $ do
       let withId =
             (mappedSpec [completeStructural "A" (recordShape [TRef "ExistingId"])])
-              { ids = [IdDecl "ExistingId" "id" Nothing noLoc]
+              { ids = [IdDecl "ExistingId" "id" TypeIdV7 Nothing noLoc]
               }
           withEnum =
             (mappedSpec [completeStructural "A" (recordShape [TRef "ExistingEnum"])])
@@ -8443,6 +9176,11 @@
         forM_ changes $ \change ->
           remediationFor ((kindOfChange change).context) ((.code) (kindOfChange change))
             `shouldSatisfy` (not . null)
+    it "never classifies a mapped mode crossing or opaque codec-version change as replay-neutral" $ do
+      modeCrossed <- replayImpactFixtures "test/fixtures/consumer-types.keiro" "test/fixtures/consumer-types-mode-cross.keiro"
+      opaqueVersionChanged <- replayImpactFixtures "test/fixtures/consumer-types.keiro" "test/fixtures/consumer-types-opaque-version.keiro"
+      modeCrossed `shouldSatisfy` (/= ReplayNeutral)
+      opaqueVersionChanged `shouldSatisfy` (/= ReplayNeutral)
     it "classifies nested nominal changes at event, snapshot, queue, and query boundaries" $ do
       prefixChanges <-
         diffFixtures
@@ -13225,6 +13963,7 @@
     }
   where
     removeInitial declaration@MappedStructural {} = declaration {msInitial = Nothing}
+    removeInitial declaration@MappedRefined {} = declaration {mrInitial = Nothing}
     removeInitial declaration@MappedOpaque {} = declaration {moInitial = Nothing}
     removeRegisters (NAggregate aggregate) =
       NAggregate
@@ -14186,6 +14925,8 @@
       onBool = ["bool"],
       onNatural = ["natural"],
       onTime = ["time"],
+      onDay = ["day"],
+      onTextSet = ["text-set"],
       onJson = ["json"],
       onOptional = ("optional" :),
       onList = ("list" :),
@@ -14337,6 +15078,9 @@
               (mutateUnionArm declarationIndex armIndex (\value -> wireArmWithTag (value.tag <> "__mutated") value) spec)
           | (armIndex, arm) <- zip [0 :: Int ..] arms
           ]
+        ShapeBare _ -> []
+        ShapeRefined _ -> []
+      MappedRefined {} -> []
       MappedOpaque {moName = declarationName, moCodecVersion = version} ->
         [ mutation
             graph
@@ -14470,6 +15214,7 @@
 
 mappedDeclarationName :: MappedDecl -> Name
 mappedDeclarationName MappedStructural {msName = name} = name
+mappedDeclarationName MappedRefined {mrName = name} = name
 mappedDeclarationName MappedOpaque {moName = name} = name
 
 statusMapSpec :: T.Text -> T.Text
@@ -15345,7 +16090,7 @@
       }
 
 genId :: Gen IdDecl
-genId = IdDecl <$> genName <*> genWire <*> pure Nothing <*> pure noLoc
+genId = IdDecl <$> genName <*> genWire <*> pure TypeIdV7 <*> pure Nothing <*> pure noLoc
 
 genEnum :: Gen EnumDecl
 genEnum = EnumDecl <$> genName <*> smallList ((,) <$> genName <*> genWire) <*> pure Nothing <*> pure noLoc
@@ -15733,7 +16478,7 @@
 regDeclWithValueType valueType (RegDecl name _ initial loc) = RegDecl name valueType initial loc
 
 idDeclWithBinding :: Maybe NominalBindingDecl -> IdDecl -> IdDecl
-idDeclWithBinding binding (IdDecl name prefix _ loc) = IdDecl name prefix binding loc
+idDeclWithBinding binding (IdDecl name prefix admission _ loc) = IdDecl name prefix admission binding loc
 
 nominalBindingWithVersion :: Maybe T.Text -> NominalBindingDecl -> NominalBindingDecl
 nominalBindingWithVersion bindingVersion (NominalBindingDecl haskell binding _ canonicalType fixtures initial loc) =
diff --git a/test/checked-mapping-adoption-test.sh b/test/checked-mapping-adoption-test.sh
new file mode 100644
--- /dev/null
+++ b/test/checked-mapping-adoption-test.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+repository_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+cd "$repository_root"
+
+workspace="keiro-dsl/test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace"
+committed="keiro-dsl/test/conformance-checked-mapping-replay"
+scratch_parent="${TMPDIR:-/tmp}"
+proof_root="$(mktemp -d "${scratch_parent%/}/keiro-checked-mapping-adoption.XXXXXX")"
+
+cleanup() {
+  case "$proof_root" in
+    "${scratch_parent%/}"/keiro-checked-mapping-adoption.*) rm -rf -- "$proof_root" ;;
+    *) printf 'refusing unsafe cleanup target: %s\n' "$proof_root" >&2 ;;
+  esac
+}
+trap cleanup EXIT
+
+hand_owned=(
+  "Conformance/CheckedMappingReplay/Domain.hs"
+  "Conformance/CheckedMappingReplay/Bindings.hs"
+  "CheckedMappingReplay/ProjectionCatalog/ProjectionCatalogHoles.hs"
+  "CheckedMappingReplay/ReplayLedger/BehaviorHoles.hs"
+  "CheckedMappingReplay/ReplayLookup/ReadModelHoles.hs"
+  "CheckedMappingReplay/ReplayReaction/ProcessHoles.hs"
+  "CheckedMappingReplay/ReplayTarget/BehaviorHoles.hs"
+)
+
+hand_hashes() {
+  local root="$1"
+  local relative
+  for relative in "${hand_owned[@]}"; do
+    test -f "$root/$relative"
+    shasum -a 256 "$root/$relative"
+  done
+}
+
+copy_hand_owned() {
+  local target="$1"
+  local relative
+  for relative in "${hand_owned[@]}"; do
+    mkdir -p "$target/$(dirname "$relative")"
+    cp "$committed/$relative" "$target/$relative"
+  done
+}
+
+fresh="$proof_root/fresh"
+existing="$proof_root/existing"
+mkdir -p "$fresh" "$existing"
+
+echo "checked-mapping adoption: public check"
+cabal run -v0 keiro-dsl -- check "$workspace"
+
+echo "checked-mapping adoption: fresh scaffold"
+cabal run -v0 keiro-dsl -- scaffold "$workspace" --out "$fresh" >/dev/null
+test -f "$fresh/Conformance/CheckedMappingReplay/Bindings.hs"
+grep -q "HOLE" "$fresh/Conformance/CheckedMappingReplay/Bindings.hs"
+copy_hand_owned "$fresh"
+hand_hashes "$fresh" >"$proof_root/fresh.before"
+cabal run -v0 keiro-dsl -- scaffold "$workspace" --out "$fresh" >/dev/null
+hand_hashes "$fresh" >"$proof_root/fresh.after"
+cmp "$proof_root/fresh.before" "$proof_root/fresh.after"
+diff -ru "$committed/Generated" "$fresh/Generated"
+
+echo "checked-mapping adoption: existing bindings and create-once files"
+cp -R "$committed/." "$existing/"
+hand_hashes "$existing" >"$proof_root/existing.before"
+cabal run -v0 keiro-dsl -- scaffold "$workspace" --out "$existing" >/dev/null
+hand_hashes "$existing" >"$proof_root/existing.after"
+cmp "$proof_root/existing.before" "$proof_root/existing.after"
+diff -ru "$committed/Generated" "$existing/Generated"
+
+echo "checked-mapping adoption: compiled harness"
+cabal test -v0 keiro-dsl:test:keiro-dsl-conformance-checked-mapping-replay --test-show-details=direct
+echo "checked-mapping adoption: PASS"
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.17.0.0 (language keiro-dsl 4) from context aggregate-scalars behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalars replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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/BareContainers/BareLookup/ReadModelHoles.hs b/test/conformance-bare-containers/BareContainers/BareLookup/ReadModelHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/BareContainers/BareLookup/ReadModelHoles.hs
@@ -0,0 +1,14 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module BareContainers.BareLookup.ReadModelHoles
+  ( bareLookupQuery
+  ) where
+
+import Generated.BareContainers.BareLookup.ReadModelTable (bareLookupQualifiedTable)
+import Generated.BareContainers.BareLookup.QueryContract (BareLookupQueryInput, BareLookupQueryResult)
+import Hasql.Transaction qualified as Tx
+
+-- HOLE: query "public"."bare_values" via bareLookupQualifiedTable; never rely on search_path.
+-- The generated QueryContract owns query input/result type identity.
+-- Declared columns:
+bareLookupQuery :: BareLookupQueryInput -> Tx.Transaction BareLookupQueryResult
+bareLookupQuery _input = bareLookupQualifiedTable `seq` error "HOLE: fill bare_lookup query"
diff --git a/test/conformance-bare-containers/BareContainers/BareStore/BehaviorHoles.hs b/test/conformance-bare-containers/BareContainers/BareStore/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/BareContainers/BareStore/BehaviorHoles.hs
@@ -0,0 +1,10 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module BareContainers.BareStore.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.BareContainers.BareStore.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-b3fa753a88b62d6d") -- BareStoreEmpty x Store: live transition
+  , Pending (BehaviorKey "behavior-v1-b728b85baa41bc71") -- BareStoreStored x Store: required rejection
+  ]
diff --git a/test/conformance-bare-containers/BareContainers/ProjectionCatalog/ProjectionCatalogHoles.hs b/test/conformance-bare-containers/BareContainers/ProjectionCatalog/ProjectionCatalogHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/BareContainers/ProjectionCatalog/ProjectionCatalogHoles.hs
@@ -0,0 +1,23 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module BareContainers.ProjectionCatalog.ProjectionCatalogHoles
+  ( BareWriterEvent (..)
+  , applyBareWriterLive
+  , bareWriterIdempotencyKey
+  , applyBareWriterReplay
+  , decodeBareWriterReplay
+  ) where
+
+import Hasql.Transaction qualified as Tx
+import Keiro.Projection.Catalog qualified as Catalog
+import Kiroku.Store.Types (EventId, RecordedEvent)
+
+-- Projection owner bare_writer (order 10).
+data BareWriterEvent = BareWriterEvent
+applyBareWriterLive :: RecordedEvent -> Tx.Transaction ()
+applyBareWriterLive = error "HOLE: fill bare_writer live apply"
+bareWriterIdempotencyKey :: RecordedEvent -> EventId
+bareWriterIdempotencyKey = error "HOLE: return the durable event id for bare_writer"
+decodeBareWriterReplay :: RecordedEvent -> Catalog.ReplayDecodeResult BareWriterEvent
+decodeBareWriterReplay = error "HOLE: classify and decode every bare_writer source event"
+applyBareWriterReplay :: BareWriterEvent -> RecordedEvent -> Tx.Transaction ()
+applyBareWriterReplay = error "HOLE: fill bare_writer replay apply without live-only side effects"
diff --git a/test/conformance-bare-containers/Conformance/BareContainers/Bindings.hs b/test/conformance-bare-containers/Conformance/BareContainers/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Conformance/BareContainers/Bindings.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
+
+-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
+-- and never overwrites it. Fill each HOLE and run the generated harness.
+module Conformance.BareContainers.Bindings (
+    textMapFixtures
+  , textMapBinding
+  , textListFixtures
+  , textListBinding
+  , nestedIdsFixtures
+  , nestedIdsBinding
+  , initialMaybeText
+  , maybeTextFixtures
+  , maybeTextBinding
+  , bareEnvelopeFixtures
+  , bareEnvelopeBinding
+) where
+
+import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, NestedIds, TextList, TextMap)
+import Conformance.BareContainers.Domain qualified as Domain
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import Generated.BareContainers.Nominals (ItemId, parseItemId)
+import Generated.BareContainers.Structural.Shape.BareEnvelope qualified as ShapeBareEnvelope
+import Generated.BareContainers.Structural.Shape.MaybeText qualified as ShapeMaybeText
+import Generated.BareContainers.Structural.Shape.NestedIds qualified as ShapeNestedIds
+import Generated.BareContainers.Structural.Shape.TextList qualified as ShapeTextList
+import Generated.BareContainers.Structural.Shape.TextMap qualified as ShapeTextMap
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+textMapFixtures :: FixtureCases TextMap
+textMapFixtures =
+  FixtureCases
+    ( ("empty", Domain.TextMap Map.empty)
+        :| [("present", Domain.TextMap (Map.fromList [("alpha", "one"), ("beta", "two")]))]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+textMapBinding :: StructuralBinding TextMap ShapeTextMap.TextMapShape
+textMapBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.TextMap value -> value,
+      bindingFromShape = Domain.TextMap
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for TextList
+textListFixtures :: FixtureCases TextList
+textListFixtures =
+  FixtureCases
+    ( ("empty", Domain.TextList [])
+        :| [("ordered-duplicates", Domain.TextList ["b", "a", "a"])]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+textListBinding :: StructuralBinding TextList ShapeTextList.TextListShape
+textListBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.TextList value -> value,
+      bindingFromShape = Domain.TextList
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for NestedIds
+nestedIdsFixtures :: FixtureCases NestedIds
+nestedIdsFixtures =
+  FixtureCases
+    ( ("empty", Domain.NestedIds [])
+        :| [("null-and-present", Domain.NestedIds [Nothing, Just itemId])]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+nestedIdsBinding :: StructuralBinding NestedIds ShapeNestedIds.NestedIdsShape
+nestedIdsBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.NestedIds value -> value,
+      bindingFromShape = Domain.NestedIds
+    }
+
+-- HOLE: provide the initial register value for MaybeText
+initialMaybeText :: MaybeText
+initialMaybeText = Domain.MaybeText Nothing
+
+-- HOLE: provide deterministic labelled conformance fixtures for MaybeText
+maybeTextFixtures :: FixtureCases MaybeText
+maybeTextFixtures =
+  FixtureCases
+    ( ("nothing", Domain.MaybeText Nothing)
+        :| [("present", Domain.MaybeText (Just "x"))]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+maybeTextBinding :: StructuralBinding MaybeText ShapeMaybeText.MaybeTextShape
+maybeTextBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.MaybeText value -> value,
+      bindingFromShape = Domain.MaybeText
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for BareEnvelope
+bareEnvelopeFixtures :: FixtureCases BareEnvelope
+bareEnvelopeFixtures =
+  FixtureCases
+    ( ("defaults", Domain.BareEnvelope initialMaybeText (Domain.TextList []) (Domain.TextMap Map.empty) (Domain.NestedIds []))
+        :| [ ( "present",
+               Domain.BareEnvelope
+                 (Domain.MaybeText (Just "label"))
+                 (Domain.TextList ["b", "a", "a"])
+                 (Domain.TextMap (Map.fromList [("alpha", "one")]))
+                 (Domain.NestedIds [Nothing, Just itemId])
+             )
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+bareEnvelopeBinding :: StructuralBinding BareEnvelope ShapeBareEnvelope.BareEnvelopeShape
+bareEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.BareEnvelope optionalLabel labels attributes nestedIds ->
+          ShapeBareEnvelope.BareEnvelope
+            (bindingToShape maybeTextBinding optionalLabel)
+            (bindingToShape textListBinding labels)
+            (bindingToShape textMapBinding attributes)
+            (bindingToShape nestedIdsBinding nestedIds),
+      bindingFromShape = \case
+        ShapeBareEnvelope.BareEnvelope optionalLabel labels attributes nestedIds ->
+          Domain.BareEnvelope
+            (bindingFromShape maybeTextBinding optionalLabel)
+            (bindingFromShape textListBinding labels)
+            (bindingFromShape textMapBinding attributes)
+            (bindingFromShape nestedIdsBinding nestedIds)
+    }
+
+itemIdText :: Text
+itemIdText = "item_01h455vb4pex5vsknk084sn02q"
+
+itemId :: ItemId
+itemId = case parseItemId itemIdText of
+  Left reason -> error ("invalid committed ItemId fixture: " <> show reason)
+  Right value -> value
diff --git a/test/conformance-bare-containers/Conformance/BareContainers/Domain.hs b/test/conformance-bare-containers/Conformance/BareContainers/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Conformance/BareContainers/Domain.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Conformance.BareContainers.Domain where
+
+import Data.Aeson (FromJSON, ToJSON)
+import Data.Map.Strict (Map)
+import Data.Proxy (Proxy)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.BareContainers.Nominals (ItemId)
+import Keiki.Shape (CanonicalTypeName (..))
+
+newtype MaybeText = MaybeText {unMaybeText :: Maybe Text}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeText where
+  canonicalTypeName :: Proxy MaybeText -> Text
+  canonicalTypeName _ = "conformance.bare-containers.MaybeText.v1"
+
+newtype TextList = TextList {unTextList :: [Text]}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName TextList where
+  canonicalTypeName :: Proxy TextList -> Text
+  canonicalTypeName _ = "conformance.bare-containers.TextList.v1"
+
+newtype TextMap = TextMap {unTextMap :: Map Text Text}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName TextMap where
+  canonicalTypeName :: Proxy TextMap -> Text
+  canonicalTypeName _ = "conformance.bare-containers.TextMap.v1"
+
+newtype NestedIds = NestedIds {unNestedIds :: [Maybe ItemId]}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName NestedIds where
+  canonicalTypeName :: Proxy NestedIds -> Text
+  canonicalTypeName _ = "conformance.bare-containers.NestedIds.v1"
+
+data BareEnvelope = BareEnvelope
+  { optionalLabel :: !MaybeText,
+    labels :: !TextList,
+    attributes :: !TextMap,
+    nestedIds :: !NestedIds
+  }
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName BareEnvelope where
+  canonicalTypeName :: Proxy BareEnvelope -> Text
+  canonicalTypeName _ = "conformance.bare-containers.BareEnvelope.v1"
diff --git a/test/conformance-bare-containers/Conformance/BareContainers/Historical.hs b/test/conformance-bare-containers/Conformance/BareContainers/Historical.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Conformance/BareContainers/Historical.hs
@@ -0,0 +1,19 @@
+module Conformance.BareContainers.Historical
+  ( historicalMaybeTextCodec,
+  )
+where
+
+import Conformance.BareContainers.Domain (MaybeText (..))
+import Data.Aeson (parseJSON, toJSON)
+import Data.Aeson.Types (parseEither)
+import Data.Text qualified as T
+import Keiro.Dsl.CodecCompare (HistoricalCodec (..))
+
+historicalMaybeTextCodec :: HistoricalCodec MaybeText
+historicalMaybeTextCodec =
+  HistoricalCodec
+    { identity = "conformance.bare-containers.MaybeText.opaque-json",
+      version = "opaque-v1",
+      encode = \(MaybeText value) -> toJSON value,
+      decode = either (Left . T.pack) (Right . MaybeText) . parseEither parseJSON
+    }
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs
@@ -0,0 +1,78 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit.
+module Generated.BareContainers.BareJobs.Queue
+  ( BareJob (..)
+  , encodeBareJob
+  , parseBareJob
+  , encodeMaybeTextMapped
+  , decodeMaybeTextMapped
+  , encodeTextListMapped
+  , decodeTextListMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Conformance.BareContainers.Bindings qualified as Bindings
+import Conformance.BareContainers.Domain (MaybeText, TextList)
+import Generated.BareContainers.Structural.Shape.MaybeText qualified as ShapeMaybeText
+import Generated.BareContainers.Structural.Shape.TextList qualified as ShapeTextList
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "bare_jobs"
+queueDlq = "bare_jobs_dlq"
+queueTable = "pgmq.q_bare_jobs"
+
+data BareJob = BareJob
+  { optionalLabel :: !MaybeText
+  , labels :: !TextList
+  }
+  deriving stock (Eq, Show)
+
+encodeMaybeTextMapped :: MaybeText -> Value
+encodeMaybeTextMapped = encodeMaybeTextShape . bindingToShape Bindings.maybeTextBinding
+
+parseMaybeTextMapped :: Value -> Parser MaybeText
+parseMaybeTextMapped value = bindingFromShape Bindings.maybeTextBinding <$> parseMaybeTextShape value
+
+decodeMaybeTextMapped :: Value -> Either Text MaybeText
+decodeMaybeTextMapped = mapLeftText . parseEither parseMaybeTextMapped
+
+encodeMaybeTextShape :: ShapeMaybeText.MaybeTextShape -> Value
+encodeMaybeTextShape value = maybe Null (\item0 -> toJSON (item0)) (value)
+
+parseMaybeTextShape :: Value -> Parser ShapeMaybeText.MaybeTextShape
+parseMaybeTextShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseJSON) other0
+
+encodeTextListMapped :: TextList -> Value
+encodeTextListMapped = encodeTextListShape . bindingToShape Bindings.textListBinding
+
+parseTextListMapped :: Value -> Parser TextList
+parseTextListMapped value = bindingFromShape Bindings.textListBinding <$> parseTextListShape value
+
+decodeTextListMapped :: Value -> Either Text TextList
+decodeTextListMapped = mapLeftText . parseEither parseTextListMapped
+
+encodeTextListShape :: ShapeTextList.TextListShape -> Value
+encodeTextListShape value = toJSON (map (\item0 -> toJSON (item0)) (value))
+
+parseTextListShape :: Value -> Parser ShapeTextList.TextListShape
+parseTextListShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseJSON) item0 <?> Index index0) (zip [0..] items0)
+
+encodeBareJob :: BareJob -> Value
+encodeBareJob payload =
+  object
+    [ "optional_label" .= encodeMaybeTextMapped payload.optionalLabel
+    , "labels" .= encodeTextListMapped payload.labels
+    ]
+
+parseBareJob :: Value -> Either Text BareJob
+parseBareJob = mapLeftText . parseEither (withObject "BareJob" go)
+  where
+    go objectValue = BareJob <$> explicitParseField (parseMaybeTextMapped) objectValue "optional_label" <*> explicitParseField (parseTextListMapped) objectValue "labels"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.BareContainers.BareJobs.QueueCodec (bareJobsPayloadCodec, bareJobsJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.BareContainers.BareJobs.Queue (BareJob, encodeBareJob, parseBareJob)
+
+bareJobsPayloadCodec :: Codec BareJob
+bareJobsPayloadCodec =
+  Codec
+    { eventTypes = EventType "BareJob" :| []
+    , eventType = \_ -> EventType "BareJob"
+    , schemaVersion = 1
+    , encode = encodeBareJob
+    , decode = \_ -> parseBareJob
+    , upcasters = []
+    }
+
+bareJobsJobCodec :: JobCodec BareJob
+bareJobsJobCodec = keiroJobCodec bareJobsPayloadCodec
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit.
+module Generated.BareContainers.BareJobs.QueuePolicy
+  ( BareJobsOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data BareJobsOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: BareJobsOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs
@@ -0,0 +1,10 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.
+module Generated.BareContainers.BareLookup.QueryContract
+  ( BareLookupQueryInput
+  , BareLookupQueryResult
+  ) where
+
+import Conformance.BareContainers.Domain (MaybeText, TextList)
+
+type BareLookupQueryInput = MaybeText
+type BareLookupQueryResult = [TextList]
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs
@@ -0,0 +1,28 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.
+module Generated.BareContainers.BareLookup.ReadModel
+  ( bareLookupReadModel
+  , bareLookupQualifiedTable
+  ) where
+
+import Generated.BareContainers.BareLookup.ReadModelTable (bareLookupQualifiedTable)
+import Generated.BareContainers.BareLookup.QueryContract (BareLookupQueryInput, BareLookupQueryResult)
+import BareContainers.BareLookup.ReadModelHoles (bareLookupQuery)
+import Keiro.ReadModel (QueryCursorAuthority (..), ReadModel, ReadModelBlueprint (..), HeadScope (..), headWaitingReadModel)
+
+bareLookupReadModel :: ReadModel BareLookupQueryInput BareLookupQueryResult
+bareLookupReadModel =
+  case headWaitingReadModel EntireVisibleLog bareLookupReadModelBlueprint of
+    Left definitionError -> error ("keiro-dsl generated an invalid waiting read model: " <> show definitionError)
+    Right model -> model
+
+bareLookupReadModelBlueprint :: ReadModelBlueprint BareLookupQueryInput BareLookupQueryResult
+bareLookupReadModelBlueprint =
+  ReadModelBlueprint
+    { name = "bare-containers-bare-lookup"
+    , tableName = "bare_values"
+    , schema = "public"
+    , version = 1
+    , shapeHash = "fnv1a:3c07a19c552c3547"
+    , cursorAuthority = DurableQueryCursor "bare-writer"
+    , query = bareLookupQuery
+    }
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs
@@ -0,0 +1,57 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text qualified as T
+import Data.List.NonEmpty qualified as NE
+import Generated.BareContainers.ProjectionCatalog qualified as ProjectionCatalog
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel (ReadModel (..), readModelCursorAuthority, readModelDefaultFreshness)
+
+-- | (fact, expected from notation, actual generated runtime value).
+readModelFacts :: [(String, String, String)]
+readModelFacts =
+  [ ("registryName", "bare-containers-bare-lookup", T.unpack bareLookupReadModel.name)
+  , ("shapeHash", "fnv1a:3c07a19c552c3547", T.unpack bareLookupReadModel.shapeHash)
+  , ("freshness", "WaitForHead EntireVisibleLog", show (readModelDefaultFreshness bareLookupReadModel))
+  , ("cursorAuthority", "DurableQueryCursor \"bare-writer\"", show (readModelCursorAuthority bareLookupReadModel))
+  ]
+    <> catalogFactsAgainst ProjectionCatalog.projectionCatalogRegistrations ProjectionCatalog.projectionCatalogAsyncRegistrations ProjectionCatalog.projectionCatalogQuerySupplies
+
+catalogFactsAgainst :: [Catalog.CatalogRegistration] -> [Catalog.AsyncProjectionRegistration] -> [Catalog.ResolvedQuerySupply] -> [(String, String, String)]
+catalogFactsAgainst registrations asyncRegistrations supplies =
+  [ ("catalogRegistration", "bare-containers-bare-lookup|1|fnv1a:3c07a19c552c3547|bare_rebuild", renderRegistration [entry | entry <- registrations, Catalog.queryModelIdText entry.queryModelId == "bare_lookup"])
+  , ("querySupply", "bare_writer|bare_rebuild|bare_table", renderSupply [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "bare_lookup"])
+  , ("projectionDelivery", "subscription", renderDelivery [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "bare_lookup"])
+  , ("asyncRegistration:bare_writer", "bare-writer|bare-writer-v1", renderAsync [entry | entry <- asyncRegistrations, Catalog.projectionIdText entry.projectionId == "bare_writer"])
+  ]
+
+renderRegistration :: [Catalog.CatalogRegistration] -> String
+renderRegistration [entry] = T.unpack entry.registryName <> "|" <> show entry.version <> "|" <> T.unpack entry.shapeHash <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.rebuildGroupId)
+renderRegistration _ = "missing"
+
+renderSupply :: [Catalog.ResolvedQuerySupply] -> String
+renderSupply [entry] = T.unpack (Catalog.projectionIdText entry.resolvedProjectionId) <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.resolvedRebuildGroupId) <> "|" <> T.unpack (T.intercalate "," (map Catalog.targetIdText (NE.toList entry.resolvedObservedTargets)))
+renderSupply _ = "missing"
+
+renderDelivery :: [Catalog.ResolvedQuerySupply] -> String
+renderDelivery [entry] = T.unpack (T.intercalate "," (map renderCapability (NE.toList entry.resolvedHandlerCapabilities)))
+renderDelivery _ = "missing"
+
+renderCapability :: Catalog.ProjectionHandlerCapability -> T.Text
+renderCapability Catalog.InlineCapability {} = "inline"
+renderCapability Catalog.SubscriptionCapability {} = "subscription"
+
+renderAsync :: [Catalog.AsyncProjectionRegistration] -> String
+renderAsync [entry] = T.unpack entry.subscriptionName <> "|" <> T.unpack entry.dedupName
+renderAsync _ = "missing"
+
+readModelFactResults :: [(String, Bool)]
+readModelFactResults =
+  [(fact, expected == actual) | (fact, expected, actual) <- readModelFacts]
+
+runReadModelFacts :: IO Bool
+runReadModelFacts = do
+  let failures = [(fact, expected, actual) | (fact, expected, actual) <- readModelFacts, expected /= actual]
+  mapM_ (\(fact, expected, actual) -> putStrLn ("FAIL  " <> fact <> " expected=" <> show expected <> " actual=" <> show actual)) failures
+  pure (null failures)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.
+module Generated.BareContainers.BareLookup.ReadModelTable (bareLookupQualifiedTable) where
+
+import Data.Text (Text)
+import Keiro.Connection (qualifyTable)
+
+-- The fully-qualified, double-quoted data-table reference.
+bareLookupQualifiedTable :: Text
+bareLookupQualifiedTable = qualifyTable "public" "bare_values"
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs
@@ -0,0 +1,350 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.BareContainers.BareStore.Codec (encodeBareStoreEvent, parseBareStoreEvent, bareStoreCodec)
+import Generated.BareContainers.BareStore.Domain
+import Generated.BareContainers.BareStore.Transducer (bareStoreTransducer)
+import Generated.BareContainers.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 :: !BareStoreVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef BareStoreVertex))
+  , target :: !(Maybe BareStoreVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty BareStoreEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [BareStoreEvent]
+      , command :: BareStoreCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [BareStoreEvent]
+      , observedChunk :: [BareStoreEvent]
+      }
+  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 =
+  [ -- BareStoreEmpty x Store: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-b3fa753a88b62d6d"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = BareStoreEmpty
+      , commandName = "Store"
+      , expectedEdge = (Just (K.EdgeRef BareStoreEmpty 0))
+      , target = Just BareStoreStored
+      , eventKinds = ["StoredValue"]
+      }
+  , -- BareStoreStored x Store: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-b728b85baa41bc71"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = BareStoreStored
+      , commandName = "Store"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: BareStore"
+  , "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 -> [BareStoreEvent] -> BareStoreCommand -> 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 -> (BareStoreVertex, K.RegFile BareStoreRegs) -> BareStoreCommand -> 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 bareStoreTransducer 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 -> (BareStoreVertex, K.RegFile BareStoreRegs) -> BareStoreCommand -> 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 bareStoreTransducer 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 bareStoreTransducer 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 bareStoreTransducer 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 BareStoreRegs BareStoreVertex BareStoreEvent -> 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 -> [BareStoreEvent] -> [BareStoreEvent] -> 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 bareStoreTransducer (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 BareStoreVertex] -> 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 -> [BareStoreEvent] -> Either BehaviorFailure (K.ReplaySuccess BareStoreRegs BareStoreVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither bareStoreTransducer (BareStoreEmpty, initialBareStoreRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [BareStoreEvent] -> Either Text [BareStoreEvent]
+decodeEvents = traverse (\event -> parseBareStoreEvent (Codec.eventType bareStoreCodec event) (encodeBareStoreEvent event))
+
+commandKind :: BareStoreCommand -> Text
+commandKind command = case command of
+  Store _ -> "Store"
+
+eventKind :: BareStoreEvent -> Text
+eventKind event = case Codec.eventType bareStoreCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile BareStoreRegs -> K.RegFile BareStoreRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current)
+
+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-bare-containers/Generated/BareContainers/BareStore/Codec.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs
@@ -0,0 +1,193 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.Codec (
+    bareStoreCodec,
+    parseBareStoreEvent,
+    encodeBareStoreEvent,
+    encodeBareEnvelopeMapped,
+    decodeBareEnvelopeMapped,
+    encodeMaybeTextMapped,
+    decodeMaybeTextMapped,
+    encodeNestedIdsMapped,
+    decodeNestedIdsMapped,
+    encodeTextListMapped,
+    decodeTextListMapped,
+    encodeTextMapMapped,
+    decodeTextMapMapped,
+) where
+
+import Generated.BareContainers.BareStore.Domain
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Generated.BareContainers.Structural.NominalLeaves (encodeItemIdLeaf, parseItemIdLeaf)
+import Conformance.BareContainers.Bindings qualified as Bindings
+import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, NestedIds, TextList, TextMap)
+import Generated.BareContainers.Structural.Shape.BareEnvelope qualified as ShapeBareEnvelope
+import Generated.BareContainers.Structural.Shape.MaybeText qualified as ShapeMaybeText
+import Generated.BareContainers.Structural.Shape.NestedIds qualified as ShapeNestedIds
+import Generated.BareContainers.Structural.Shape.TextList qualified as ShapeTextList
+import Generated.BareContainers.Structural.Shape.TextMap qualified as ShapeTextMap
+
+
+
+encodeBareEnvelopeMapped :: BareEnvelope -> Value
+encodeBareEnvelopeMapped = encodeBareEnvelopeShape . bindingToShape Bindings.bareEnvelopeBinding
+
+parseBareEnvelopeMapped :: Value -> Parser BareEnvelope
+parseBareEnvelopeMapped value = bindingFromShape Bindings.bareEnvelopeBinding <$> parseBareEnvelopeShape value
+
+decodeBareEnvelopeMapped :: Value -> Either Text BareEnvelope
+decodeBareEnvelopeMapped = mapLeftText . parseEither parseBareEnvelopeMapped
+
+encodeBareEnvelopeShape :: ShapeBareEnvelope.BareEnvelopeShape -> Value
+encodeBareEnvelopeShape shape =
+  object
+      [ "optionalLabel" .= encodeMaybeTextShape (shape.optionalLabel)
+      , "labels" .= encodeTextListShape (shape.labels)
+      , "attributes" .= encodeTextMapShape (shape.attributes)
+      , "nestedIds" .= encodeNestedIdsShape (shape.nestedIds)
+      ]
+
+parseBareEnvelopeShape :: Value -> Parser ShapeBareEnvelope.BareEnvelopeShape
+parseBareEnvelopeShape = withObject "BareEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "BareEnvelope" ["optionalLabel", "labels", "attributes", "nestedIds"] objectValue
+  ShapeBareEnvelope.BareEnvelope
+    <$> parseOptionalField (pure Nothing) (parseMaybeTextShape) objectValue "optionalLabel"
+    <*> parseOptionalField (pure []) (parseTextListShape) objectValue "labels"
+    <*> parseOptionalField (pure Map.empty) (parseTextMapShape) objectValue "attributes"
+    <*> explicitParseField (parseNestedIdsShape) objectValue "nestedIds"
+
+encodeMaybeTextMapped :: MaybeText -> Value
+encodeMaybeTextMapped = encodeMaybeTextShape . bindingToShape Bindings.maybeTextBinding
+
+parseMaybeTextMapped :: Value -> Parser MaybeText
+parseMaybeTextMapped value = bindingFromShape Bindings.maybeTextBinding <$> parseMaybeTextShape value
+
+decodeMaybeTextMapped :: Value -> Either Text MaybeText
+decodeMaybeTextMapped = mapLeftText . parseEither parseMaybeTextMapped
+
+encodeMaybeTextShape :: ShapeMaybeText.MaybeTextShape -> Value
+encodeMaybeTextShape value = maybe Null (\item0 -> toJSON (item0)) (value)
+
+parseMaybeTextShape :: Value -> Parser ShapeMaybeText.MaybeTextShape
+parseMaybeTextShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseJSON) other0
+
+encodeNestedIdsMapped :: NestedIds -> Value
+encodeNestedIdsMapped = encodeNestedIdsShape . bindingToShape Bindings.nestedIdsBinding
+
+parseNestedIdsMapped :: Value -> Parser NestedIds
+parseNestedIdsMapped value = bindingFromShape Bindings.nestedIdsBinding <$> parseNestedIdsShape value
+
+decodeNestedIdsMapped :: Value -> Either Text NestedIds
+decodeNestedIdsMapped = mapLeftText . parseEither parseNestedIdsMapped
+
+encodeNestedIdsShape :: ShapeNestedIds.NestedIdsShape -> Value
+encodeNestedIdsShape value = toJSON (map (\item0 -> maybe Null (\item1 -> encodeItemIdLeaf item1) (item0)) (value))
+
+parseNestedIdsShape :: Value -> Parser ShapeNestedIds.NestedIdsShape
+parseNestedIdsShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (\value1 -> case value1 of Null -> pure Nothing; other1 -> Just <$> (parseItemIdLeaf) other1) item0 <?> Index index0) (zip [0..] items0)
+
+encodeTextListMapped :: TextList -> Value
+encodeTextListMapped = encodeTextListShape . bindingToShape Bindings.textListBinding
+
+parseTextListMapped :: Value -> Parser TextList
+parseTextListMapped value = bindingFromShape Bindings.textListBinding <$> parseTextListShape value
+
+decodeTextListMapped :: Value -> Either Text TextList
+decodeTextListMapped = mapLeftText . parseEither parseTextListMapped
+
+encodeTextListShape :: ShapeTextList.TextListShape -> Value
+encodeTextListShape value = toJSON (map (\item0 -> toJSON (item0)) (value))
+
+parseTextListShape :: Value -> Parser ShapeTextList.TextListShape
+parseTextListShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseJSON) item0 <?> Index index0) (zip [0..] items0)
+
+encodeTextMapMapped :: TextMap -> Value
+encodeTextMapMapped = encodeTextMapShape . bindingToShape Bindings.textMapBinding
+
+parseTextMapMapped :: Value -> Parser TextMap
+parseTextMapMapped value = bindingFromShape Bindings.textMapBinding <$> parseTextMapShape value
+
+decodeTextMapMapped :: Value -> Either Text TextMap
+decodeTextMapMapped = mapLeftText . parseEither parseTextMapMapped
+
+encodeTextMapShape :: ShapeTextMap.TextMapShape -> Value
+encodeTextMapShape value = toJSON (Map.map (\item0 -> toJSON (item0)) (value))
+
+parseTextMapShape :: Value -> Parser ShapeTextMap.TextMapShape
+parseTextMapShape = \value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseJSON) item0 <?> Key (Key.fromText key0)) items0
+
+bareStoreEventTypes :: NonEmpty EventType
+bareStoreEventTypes = EventType "StoredValue" :| []
+
+bareStoreCodec :: Codec BareStoreEvent
+bareStoreCodec =
+  Codec
+    { eventTypes = bareStoreEventTypes
+    , eventType = \case
+        StoredValue{} -> EventType "StoredValue"
+    , schemaVersion = 1
+    , encode = encodeBareStoreEvent
+    , decode = parseBareStoreEvent
+    , upcasters = []
+    }
+
+encodeBareStoreEvent :: BareStoreEvent -> Value
+encodeBareStoreEvent = \case
+  StoredValue payload ->
+    object
+      [ "kind" .= ("StoredValue" :: Text)
+      , "optionalLabel" .= encodeMaybeTextMapped payload.optionalLabel
+      , "labels" .= encodeTextListMapped payload.labels
+      , "attributes" .= encodeTextMapMapped payload.attributes
+      , "envelope" .= encodeBareEnvelopeMapped payload.envelope
+      ]
+
+parseBareStoreEvent :: EventType -> Value -> Either Text BareStoreEvent
+parseBareStoreEvent (EventType tag) = mapLeftText . parseEither (withObject "BareStoreEvent" go)
+  where
+    go o = do
+      case tag of
+        "StoredValue" ->
+          StoredValue
+            <$> ( StoredValueData
+                    <$> parseOptionalField (parseMaybeTextMapped Null) parseMaybeTextMapped o "optionalLabel"
+                    <*> explicitParseField parseTextListMapped o "labels"
+                    <*> explicitParseField parseTextMapMapped o "attributes"
+                    <*> explicitParseField parseBareEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes bareStoreEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-bare-containers/Generated/BareContainers/BareStore/Domain.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.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.BareContainers.Bindings qualified as Bindings
+import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, TextList, TextMap)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data BareStoreVertex = BareStoreEmpty | BareStoreStored
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+  deriving anyclass (ToJSON, FromJSON)
+instance CanonicalStateShape BareStoreVertex
+instance CanonicalTypeName BareStoreVertex
+
+data StoreData = StoreData
+  { optionalLabel :: !MaybeText
+  , labels :: !TextList
+  , attributes :: !TextMap
+  , envelope :: !BareEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data BareStoreCommand = Store !StoreData
+  deriving stock (Generic, Eq, Show)
+
+data StoredValueData = StoredValueData
+  { optionalLabel :: !MaybeText
+  , labels :: !TextList
+  , attributes :: !TextMap
+  , envelope :: !BareEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data BareStoreEvent = StoredValue !StoredValueData
+  deriving stock (Generic, Eq, Show)
+
+type BareStoreRegs =
+  '[ '("current", MaybeText)
+   ]
+
+initialBareStoreRegs :: RegFile BareStoreRegs
+initialBareStoreRegs =
+  RCons (Proxy @"current") Bindings.initialMaybeText RNil
+
+$(deriveAggregateCtorsAll ''BareStoreCommand ''BareStoreRegs)
+
+
+
+$(deriveWireCtorsAll ''BareStoreEvent)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs
@@ -0,0 +1,63 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.EventStream
+  ( bareStoreCategory
+  , bareStoreCommandCategory
+  , bareStoreEventStream
+  , bareStoreEventStreamDef
+  , BareStoreEventStream
+  , BareStoreEventStreamDef
+  , bareStoreSnapshotFixture
+  ) where
+
+import Generated.BareContainers.BareStore.Domain
+import Generated.BareContainers.BareStore.Codec (bareStoreCodec)
+import Generated.BareContainers.BareStore.Transducer (bareStoreFoldFingerprint, bareStoreTransducer)
+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.
+bareStoreCategory :: Stream.StreamCategory BareStoreEventStreamDef
+bareStoreCategory = Stream.categoryUnsafe "bareStore"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+bareStoreCommandCategory :: Stream.StreamCategory BareStoreCommand
+bareStoreCommandCategory = Stream.categoryUnsafe "bareStore"
+
+type BareStoreEventStreamDef =
+  EventStream (HsPred BareStoreRegs BareStoreCommand) BareStoreRegs BareStoreVertex BareStoreCommand BareStoreEvent
+
+type BareStoreEventStream =
+  ValidatedEventStream (HsPred BareStoreRegs BareStoreCommand) BareStoreRegs BareStoreVertex BareStoreCommand BareStoreEvent
+
+bareStoreEventStreamDef :: BareStoreEventStreamDef
+bareStoreEventStreamDef =
+  EventStream
+    { transducer = bareStoreTransducer,
+      initialState = BareStoreEmpty,
+      initialRegisters = initialBareStoreRegs,
+      eventCodec = bareStoreCodec,
+      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 bareStoreFoldFingerprint (defaultStateCodec 1))
+    }
+
+bareStoreSnapshotFixture :: (Int, Text)
+bareStoreSnapshotFixture = (1, "bare-containers-v1")
+
+bareStoreEventStream :: BareStoreEventStream
+bareStoreEventStream =
+  mkEventStreamOrThrow "BareStore" bareStoreEventStreamDef
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.Harness (harnessAssertions) where
+
+import Generated.BareContainers.BareStore.Domain
+import Generated.BareContainers.BareStore.Codec (encodeBareStoreEvent, parseBareStoreEvent, bareStoreCodec, encodeBareEnvelopeMapped, decodeBareEnvelopeMapped)
+import Generated.BareContainers.BareStore.Transducer (bareStoreTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+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, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.BareContainers.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 bareStoreTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: StoredValue", roundTrips sampleEventStoredValue)
+  , ("accepts Store from BareStoreEmpty", acceptStore)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayStore
+
+roundTrips :: BareStoreEvent -> Bool
+roundTrips e = parseBareStoreEvent (eventType bareStoreCodec e) (encodeBareStoreEvent e) == Right e
+
+sampleEventStoredValue :: BareStoreEvent
+sampleEventStoredValue = StoredValue (StoredValueData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))
+
+acceptStore :: Bool
+acceptStore =
+  case step bareStoreTransducer (BareStoreEmpty, initialBareStoreRegs) (Store (StoreData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == BareStoreStored
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayStore :: [(String, Bool)]
+forwardReplayStore =
+  case step bareStoreTransducer (BareStoreEmpty, initialBareStoreRegs) (Store (StoreData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseBareStoreEvent (eventType bareStoreCodec event) (encodeBareStoreEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither bareStoreTransducer (BareStoreEmpty, initialBareStoreRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              ]
+  where
+    prefix = "forward/replay equality: Store from BareStoreEmpty -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ storedValueOptionalLabelAssertions
+    , storedValueLabelsAssertions
+    , storedValueAttributesAssertions
+    , storedValueEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+storedValueOptionalLabelAssertions :: [(String, Bool)]
+storedValueOptionalLabelAssertions =
+  [ ("mapped codec round-trip: StoredValue/optionalLabel/" <> T.unpack label, roundTrips (StoredValue (StoredValueData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeTextFixtures)
+  ]
+
+storedValueLabelsAssertions :: [(String, Bool)]
+storedValueLabelsAssertions =
+  [ ("mapped codec round-trip: StoredValue/labels/" <> T.unpack label, roundTrips (StoredValue (StoredValueData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.textListFixtures)
+  ]
+
+storedValueAttributesAssertions :: [(String, Bool)]
+storedValueAttributesAssertions =
+  [ ("mapped codec round-trip: StoredValue/attributes/" <> T.unpack label, roundTrips (StoredValue (StoredValueData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.textMapFixtures)
+  ]
+
+storedValueEnvelopeAssertions :: [(String, Bool)]
+storedValueEnvelopeAssertions =
+  [ ("mapped codec round-trip: StoredValue/envelope/" <> T.unpack label, roundTrips (StoredValue (StoredValueData (snd (NonEmpty.head (fixtureCases Bindings.maybeTextFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textListFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.textMapFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.bareEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.bare-containers.BareEnvelope.v1/optionalLabel", case decodeBareEnvelopeMapped (deleteObjectField "optionalLabel" (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalLabel" (encodeBareEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.bare-containers.BareEnvelope.v1/optionalLabel", isRight (decodeBareEnvelopeMapped (insertObjectField "optionalLabel" Aeson.Null (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures)))))))
+  , ("wire policy missing default: conformance.bare-containers.BareEnvelope.v1/labels", case decodeBareEnvelopeMapped (deleteObjectField "labels" (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "labels" (encodeBareEnvelopeMapped decoded) == Just (Aeson.toJSON ([] :: [Aeson.Value])))
+  , ("wire policy explicit null: conformance.bare-containers.BareEnvelope.v1/labels", isLeft (decodeBareEnvelopeMapped (insertObjectField "labels" Aeson.Null (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures)))))))
+  , ("wire policy missing default: conformance.bare-containers.BareEnvelope.v1/attributes", case decodeBareEnvelopeMapped (deleteObjectField "attributes" (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "attributes" (encodeBareEnvelopeMapped decoded) == Just (Aeson.Object mempty))
+  , ("wire policy explicit null: conformance.bare-containers.BareEnvelope.v1/attributes", isLeft (decodeBareEnvelopeMapped (insertObjectField "attributes" Aeson.Null (encodeBareEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.bareEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.bare-containers.BareEnvelope.v1", all (\(_, value) -> isLeft (decodeBareEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeBareEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.bareEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.
+module Generated.BareContainers.BareStore.Transducer
+  ( bareStoreTransducer
+  , bareStoreFoldFingerprint
+  , BehaviorOwnership (..)
+  , bareStorePredicateVerifications
+  ) where
+
+import Generated.BareContainers.BareStore.Domain
+import Data.Text (Text)
+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 ((=:))
+
+bareStoreTransducer
+  :: SymTransducer
+       (HsPred BareStoreRegs BareStoreCommand)
+       BareStoreRegs
+       BareStoreVertex
+       BareStoreCommand
+       BareStoreEvent
+bareStoreTransducer =
+  B.buildTransducer BareStoreEmpty initialBareStoreRegs isTerminal do
+    B.from BareStoreEmpty do
+      B.onCmd inCtorStore $ \d -> B.do
+        B.slot @"current" =: d.optionalLabel
+        B.emit wireStoredValue (StoredValueTermFields
+          { optionalLabel = d.optionalLabel
+          , labels = d.labels
+          , attributes = d.attributes
+          , envelope = d.envelope
+          })
+        B.goto BareStoreStored
+ where
+  isTerminal = \case
+    BareStoreStored -> True
+    _ -> False
+
+bareStoreFoldFingerprint :: Text
+bareStoreFoldFingerprint = "d522dcd40ab98fed8f458c7388a4c085"
+
+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.
+bareStorePredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+bareStorePredicateVerifications = sequence
+  [ verifyTransition "transition1EmptyStore" GeneratedOwned BareStoreEmpty 0
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut bareStoreTransducer 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-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs b/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs
@@ -0,0 +1,30 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context bare-containers behavior source map; do not edit.
+module Generated.BareContainers.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-b3fa753a88b62d6d" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/bare-containers.keiro" 65 3)
+  "behavior-v1-b728b85baa41bc71" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/bare-containers.keiro" 60 16)
+  _ -> 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-bare-containers/Generated/BareContainers/Nominals.hs b/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context bare-containers generated nominal declarations; do not edit.
+module Generated.BareContainers.Nominals
+  ( ItemId
+  , parseItemId
+  , mkItemId
+  , itemIdText
+  ) where
+
+import Generated.BareContainers.Nominals.Internal (ItemId, mkItemId, parseItemId, itemIdText)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs b/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs
@@ -0,0 +1,40 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context bare-containers generated nominal ID internals; do not edit.
+module Generated.BareContainers.Nominals.Internal
+  ( ItemId
+  , parseItemId
+  , mkItemId
+  , itemIdText
+  , unsafeItemIdFromLegacyText
+  ) where
+
+import Data.Aeson (FromJSON (..), ToJSON (..), withText)
+import Data.Text (Text)
+import Data.Text qualified as T
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName)
+import Keiro.Codec.IdDomain (typeIdV7Domain, validateIdDomainText)
+
+newtype ItemId = ItemId Text
+  deriving stock (Generic, Eq, Ord, Show)
+
+instance CanonicalTypeName ItemId
+
+instance ToJSON ItemId where
+  toJSON = toJSON . itemIdText
+
+instance FromJSON ItemId where
+  parseJSON = withText "ItemId" (either (fail . T.unpack) pure . parseItemId)
+
+parseItemId :: Text -> Either Text ItemId
+parseItemId input = case validateIdDomainText (typeIdV7Domain "item") input of
+  Left reason -> Left (T.pack (show reason))
+  Right () -> Right (ItemId input)
+
+mkItemId :: Text -> Either Text ItemId
+mkItemId = parseItemId
+
+itemIdText :: ItemId -> Text
+itemIdText (ItemId value) = value
+
+unsafeItemIdFromLegacyText :: Text -> ItemId
+unsafeItemIdFromLegacyText = ItemId
diff --git a/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs b/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs
@@ -0,0 +1,80 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog bare-containers; do not edit.
+{-# LANGUAGE OverloadedStrings #-}
+module Generated.BareContainers.ProjectionCatalog
+  ( projectionCatalog
+  , validatedProjectionCatalog
+  , projectionCatalogInventory
+  , projectionCatalogRegistrations
+  , projectionCatalogAsyncRegistrations
+  , projectionCatalogQuerySupplies
+  , registerProjectionCatalog
+  , bareWriterProjectionSet
+  , bareRebuildRebuildGroupId
+  , startBareRebuildRebuild
+  ) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Effectful (Eff, IOE, (:>))
+import Keiro.Projection (AsyncProjection (..))
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel.Rebuild qualified as Rebuild
+import Kiroku.Store.Effect (Store)
+import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
+import BareContainers.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
+import Generated.BareContainers.BareLookup.ReadModel qualified as RMBareLookup
+
+must :: Show error => Either error value -> value
+must = either (error . show) id
+
+bareWriterProjectionSet :: Catalog.ProjectionSet Holes.BareWriterEvent
+bareWriterProjectionSet =
+  Catalog.ProjectionSet
+    (must (Catalog.mkSourceId "all"))
+    (Catalog.ProjectionDefinition
+      (must (Catalog.mkProjectionId "bare_writer"))
+      (must (Catalog.mkRebuildGroupId "bare_rebuild"))
+      ((must (Catalog.mkTargetId "bare_table")) :| [])
+      (Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeBareWriterReplay Holes.applyBareWriterReplay))
+      (Catalog.AsyncHandler (AsyncProjection "bare-writer-v1" "bare-containers-bare-lookup" "bare-writer" Holes.applyBareWriterLive Holes.bareWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "bare-writer")) (must (Catalog.mkDedupKeyId "bare-writer-v1")) (must (Catalog.mkClaimSite "projection-owner bare_writer async-handler")) :| [])
+      (must (Catalog.mkClaimSite "projection-owner bare_writer"))
+      :| [])
+    (must (Catalog.mkClaimSite "projection-owner bare_writer source"))
+
+projectionCatalog :: Catalog.ProjectionCatalog
+projectionCatalog =
+  Catalog.ProjectionCatalog
+    [Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
+    [Catalog.TargetDeclaration (must (Catalog.mkTargetId "bare_table")) (Catalog.QualifiedTable "public" "bare_values") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target bare_table"))]
+    [Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "bare_rebuild")) [(must (Catalog.mkTargetId "bare_table"))] [] (must (Catalog.mkClaimSite "rebuild-group bare_rebuild"))]
+    []
+    []
+    [Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "bare-writer")) "bare-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner bare_writer subscription"))]
+    [Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "bare-writer-v1")) "bare-writer-v1" (must (Catalog.mkClaimSite "projection-owner bare_writer dedup"))]
+    [Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "bare_lookup")) RMBareLookup.bareLookupReadModel (must (Catalog.mkRebuildGroupId "bare_rebuild")) [(must (Catalog.mkTargetId "bare_table"))] (must (Catalog.mkClaimSite "readmodel bare_lookup")))]
+    [Catalog.SomeProjectionSet bareWriterProjectionSet]
+
+validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
+validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
+  Catalog.Success catalog -> catalog
+  Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
+
+projectionCatalogInventory :: Catalog.CatalogInventory
+projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
+
+projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
+projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
+
+projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
+projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
+
+projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
+projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
+
+registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
+registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
+
+bareRebuildRebuildGroupId :: Catalog.RebuildGroupId
+bareRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "bare_rebuild"))
+
+startBareRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
+startBareRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog bareRebuildRebuildGroupId
diff --git a/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs b/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.BareContainers.ReplayAudit (auditTargets) where
+
+import Generated.BareContainers.BareStore.EventStream qualified as BareStore
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = BareStore.bareStoreEventStream
+        , category = Stream.categoryText BareStore.bareStoreCategory
+        , mkStream = streamInCategory (Stream.categoryText BareStore.bareStoreCategory)
+        }
+  ]
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/CodecCompare/MaybeText.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/CodecCompare/MaybeText.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/CodecCompare/MaybeText.hs
@@ -0,0 +1,77 @@
+
+-- @generated by keiro-dsl codec comparison; non-production migration evidence; do not edit.
+-- This module compares historical and generated codecs in consumer-owned tests only.
+-- It is never a runtime fallback and never changes the generated codec's authority.
+module Generated.BareContainers.Structural.CodecCompare.MaybeText (compareWithHistorical) where
+
+import Control.Monad (filterM)
+import Data.Aeson (Value)
+import Data.Aeson qualified as Aeson
+import Data.List (sort)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text (Text)
+import Data.Text qualified
+import Generated.BareContainers.BareStore.Codec qualified as GeneratedCodec
+import Keiro.Codec.Structural (FixtureCases (..))
+import Keiro.Dsl.CodecCompare
+import Keiro.Dsl.TypeGraph (BindingVersion (..), CanonicalTypeId (..), QualifiedValueName (..))
+import System.Directory (doesFileExist, listDirectory)
+import System.FilePath (takeExtension, (</>))
+import Conformance.BareContainers.Bindings qualified as Bindings
+import Conformance.BareContainers.Domain (MaybeText)
+
+compareWithHistorical :: HistoricalCodec MaybeText -> FilePath -> IO CompareReport
+compareWithHistorical historicalCodec goldenDirectory = do
+  names <- sort . filter ((== ".json") . takeExtension) <$> listDirectory goldenDirectory
+  files <- filterM doesFileExist [goldenDirectory </> name | name <- names]
+  loaded <- traverse (loadGolden historicalCodec) files
+  let inputIssues = [issue | Left issue <- loaded]
+      entries = [entry | Right entry <- loaded]
+      typedCases = NonEmpty.toList (fixtureCases Bindings.maybeTextFixtures)
+      encodeObservations =
+        [ EncodeObservation label (historicalCodec.encode value) (GeneratedCodec.encodeMaybeTextMapped value)
+        | (label, value) <- typedCases
+        ]
+      decodeObservations = [observation | (observation, _) <- entries]
+      typedObserved =
+        concat
+          [ observedBranchesFor FromBinding branchSchema (GeneratedCodec.encodeMaybeTextMapped value)
+          | (_, value) <- typedCases
+          ]
+      historicalObserved =
+        concat [observedBranchesFor HistoricalGolden branchSchema value | (_, values) <- entries, value <- values]
+      declared = declaredBranchesFor FromBinding branchSchema <> declaredBranchesFor HistoricalGolden branchSchema
+      provenance =
+        CompareProvenance
+          { historicalCodecIdentity = historicalCodec.identity
+          , historicalCodecVersion = historicalCodec.version
+          , canonicalType = CanonicalTypeId "conformance.bare-containers.MaybeText.v1"
+          , bindingSymbol = QualifiedValueName "Conformance.BareContainers.Bindings.maybeTextBinding"
+          , bindingVersion = BindingVersion "1"
+          , wireFingerprint = "c289b01d5d2741d7"
+          }
+  pure (compareReport provenance inputIssues (encodeObservations <> decodeObservations) declared (typedObserved <> historicalObserved))
+
+loadGolden :: HistoricalCodec MaybeText -> FilePath -> IO (Either CompareInputIssue (CompareObservation, [Value]))
+loadGolden historicalCodec path = do
+  decoded <- Aeson.eitherDecodeFileStrict path
+  pure $ case decoded of
+    Left reason -> Left (HistoricalGoldenUnreadable path (fromString reason))
+    Right inputValue ->
+      let historicalDecoded = historicalCodec.decode inputValue
+          historicalOutcome = normalizeDecode historicalDecoded
+          generatedOutcome = normalizeDecode (GeneratedCodec.decodeMaybeTextMapped inputValue)
+          observation = DecodeObservation path inputValue historicalOutcome generatedOutcome
+          coveredValues = case historicalDecoded of
+            Right value -> [inputValue, GeneratedCodec.encodeMaybeTextMapped value]
+            Left _ -> []
+       in Right (observation, coveredValues)
+
+normalizeDecode :: Either Text MaybeText -> DecodeOutcome
+normalizeDecode = either DecodeFailed (DecodedShape . GeneratedCodec.encodeMaybeTextMapped)
+
+fromString :: String -> Text
+fromString = Data.Text.pack
+
+branchSchema :: BranchSchema
+branchSchema = BranchOptional (BranchScalar)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs
@@ -0,0 +1,15 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Aeson.Types (Parser)
+import Data.Text qualified as T
+import Generated.BareContainers.Nominals qualified as Nominals
+
+encodeItemIdLeaf :: Nominals.ItemId -> Value
+encodeItemIdLeaf = String . Nominals.itemIdText
+{-# NOINLINE encodeItemIdLeaf #-}
+
+parseItemIdLeaf :: Value -> Parser Nominals.ItemId
+parseItemIdLeaf = withText "ItemId" (either (fail . T.unpack) pure . Nominals.parseItemId)
+{-# NOINLINE parseItemIdLeaf #-}
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs
@@ -0,0 +1,16 @@
+-- @generated by keiro-dsl 0.18.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)
+import Generated.BareContainers.Structural.Shape.MaybeText qualified as MaybeText
+import Generated.BareContainers.Structural.Shape.NestedIds qualified as NestedIds
+import Generated.BareContainers.Structural.Shape.TextList qualified as TextList
+import Generated.BareContainers.Structural.Shape.TextMap qualified as TextMap
+
+data BareEnvelopeShape = BareEnvelope
+  { optionalLabel :: !MaybeText.MaybeTextShape
+  , labels :: !TextList.TextListShape
+  , attributes :: !TextMap.TextMapShape
+  , nestedIds :: !NestedIds.NestedIdsShape
+  }
+  deriving stock (Eq, Generic, Show)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type MaybeTextShape = (Maybe 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
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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
+
+type NestedIdsShape = [Maybe Nominals.ItemId]
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type TextListShape = [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
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs
@@ -0,0 +1,7 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+
+type TextMapShape = (Map Text Text)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs b/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs
@@ -0,0 +1,131 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context bare-containers structural conformance; do not edit.
+module Generated.BareContainers.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Types qualified as AesonTypes
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Conformance.BareContainers.Bindings qualified as Bindings
+import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, NestedIds, TextList, TextMap)
+import Generated.BareContainers.Nominals qualified as Nominals
+import Generated.BareContainers.Structural.NominalLeaves qualified as NominalLeaves
+import Generated.BareContainers.Structural.Shape.BareEnvelope qualified as ShapeBareEnvelope
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ bareEnvelopeBindingAssertions
+    , maybeTextBindingAssertions
+    , nestedIdsBindingAssertions
+    , textListBindingAssertions
+    , textMapBindingAssertions
+    , [("generated nominal canonical text: conformance.bare-containers.BareEnvelope.v1/ItemId", all (\(_, value) -> (case bindingToShape Bindings.bareEnvelopeBinding value of ShapeBareEnvelope.BareEnvelope _ _ _ field0_3 -> (all (\item1 -> maybe True (\item2 -> (NominalLeaves.encodeItemIdLeaf (item2) == Aeson.String (Nominals.itemIdText (item2)) && AesonTypes.parseEither NominalLeaves.parseItemIdLeaf (NominalLeaves.encodeItemIdLeaf (item2)) == Right (item2))) (item1)) (field0_3)))) (NonEmpty.toList (fixtureCases Bindings.bareEnvelopeFixtures)))]
+    , [("generated nominal canonical text: conformance.bare-containers.NestedIds.v1/ItemId", all (\(_, value) -> all (\item0 -> maybe True (\item1 -> (NominalLeaves.encodeItemIdLeaf (item1) == Aeson.String (Nominals.itemIdText (item1)) && AesonTypes.parseEither NominalLeaves.parseItemIdLeaf (NominalLeaves.encodeItemIdLeaf (item1)) == Right (item1))) (item0)) (bindingToShape Bindings.nestedIdsBinding value)) (NonEmpty.toList (fixtureCases Bindings.nestedIdsFixtures)))]
+    , [("fixture coverage: conformance.bare-containers.BareEnvelope.v1", coverageBareEnvelope)]
+    , [("fixture coverage: conformance.bare-containers.MaybeText.v1", coverageMaybeText)]
+    , [("fixture coverage: conformance.bare-containers.NestedIds.v1", coverageNestedIds)]
+    , [("fixture coverage: conformance.bare-containers.TextList.v1", coverageTextList)]
+    , [("fixture coverage: conformance.bare-containers.TextMap.v1", coverageTextMap)]
+    ]
+
+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)
+
+bareEnvelopeBindingAssertions :: [(String, Bool)]
+bareEnvelopeBindingAssertions =
+  ("fixture labels: conformance.bare-containers.BareEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.bare-containers.BareEnvelope.v1", canonicalTypeName (Proxy @BareEnvelope) == "conformance.bare-containers.BareEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.bare-containers.BareEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.bareEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.bare-containers.BareEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.bareEnvelopeBinding (bindingToShape Bindings.bareEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.bareEnvelopeFixtures
+
+maybeTextBindingAssertions :: [(String, Bool)]
+maybeTextBindingAssertions =
+  ("fixture labels: conformance.bare-containers.MaybeText.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.bare-containers.MaybeText.v1", canonicalTypeName (Proxy @MaybeText) == "conformance.bare-containers.MaybeText.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.bare-containers.MaybeText.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeTextBinding value)
+      , ("binding shape round-trip: conformance.bare-containers.MaybeText.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeTextBinding (bindingToShape Bindings.maybeTextBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeTextFixtures
+
+nestedIdsBindingAssertions :: [(String, Bool)]
+nestedIdsBindingAssertions =
+  ("fixture labels: conformance.bare-containers.NestedIds.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.bare-containers.NestedIds.v1", canonicalTypeName (Proxy @NestedIds) == "conformance.bare-containers.NestedIds.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.bare-containers.NestedIds.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.nestedIdsBinding value)
+      , ("binding shape round-trip: conformance.bare-containers.NestedIds.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.nestedIdsBinding (bindingToShape Bindings.nestedIdsBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.nestedIdsFixtures
+
+textListBindingAssertions :: [(String, Bool)]
+textListBindingAssertions =
+  ("fixture labels: conformance.bare-containers.TextList.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.bare-containers.TextList.v1", canonicalTypeName (Proxy @TextList) == "conformance.bare-containers.TextList.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.bare-containers.TextList.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textListBinding value)
+      , ("binding shape round-trip: conformance.bare-containers.TextList.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textListBinding (bindingToShape Bindings.textListBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.textListFixtures
+
+textMapBindingAssertions :: [(String, Bool)]
+textMapBindingAssertions =
+  ("fixture labels: conformance.bare-containers.TextMap.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.bare-containers.TextMap.v1", canonicalTypeName (Proxy @TextMap) == "conformance.bare-containers.TextMap.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.bare-containers.TextMap.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textMapBinding value)
+      , ("binding shape round-trip: conformance.bare-containers.TextMap.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textMapBinding (bindingToShape Bindings.textMapBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.textMapFixtures
+
+coverageBareEnvelope :: Bool
+coverageBareEnvelope = True
+
+coverageMaybeText :: Bool
+coverageMaybeText = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeTextBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeTextFixtures))
+
+coverageNestedIds :: Bool
+coverageNestedIds = any null shapes && any (not . null) shapes
+  where
+    shapes = map (bindingToShape Bindings.nestedIdsBinding . snd) (NonEmpty.toList (fixtureCases Bindings.nestedIdsFixtures))
+
+coverageTextList :: Bool
+coverageTextList = any null shapes && any (not . null) shapes
+  where
+    shapes = map (bindingToShape Bindings.textListBinding . snd) (NonEmpty.toList (fixtureCases Bindings.textListFixtures))
+
+coverageTextMap :: Bool
+coverageTextMap = any Map.null shapes && any (not . Map.null) shapes
+  where
+    shapes = map (bindingToShape Bindings.textMapBinding . snd) (NonEmpty.toList (fixtureCases Bindings.textMapFixtures))
diff --git a/test/conformance-bare-containers/Main.hs b/test/conformance-bare-containers/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/Main.hs
@@ -0,0 +1,136 @@
+module Main (main) where
+
+import Conformance.BareContainers.Domain
+import Conformance.BareContainers.Historical (historicalMaybeTextCodec)
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..), object, (.=))
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Either (isLeft)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import Generated.BareContainers.BareJobs.Queue (BareJob (..), encodeBareJob, parseBareJob)
+import Generated.BareContainers.BareLookup.QueryContract (BareLookupQueryInput, BareLookupQueryResult)
+import Generated.BareContainers.BareStore.Codec
+import Generated.BareContainers.BareStore.Domain
+import Generated.BareContainers.BareStore.Harness (harnessAssertions)
+import Generated.BareContainers.Structural.CodecCompare.MaybeText (compareWithHistorical)
+import Generated.BareContainers.StructuralConformance (structuralConformanceAssertions)
+import Keiro.Codec (eventType)
+import Keiro.Dsl.CodecCompare (reportSucceeded)
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  comparison <-
+    compareWithHistorical
+      historicalMaybeTextCodec
+      "test/conformance-bare-containers/fixtures/codec-compare"
+  let assertions =
+        [("structural/" <> label, passed) | (label, passed) <- structuralConformanceAssertions]
+          <> harnessAssertions
+          <> [ ("bare optional encodes null and a present text directly", maybeTextWire),
+               ("bare list preserves order and duplicates", textListWire),
+               ("bare text map encodes as an object", textMapWire),
+               ("missing optional alias fields apply their declared defaults", missingAliasDefaults),
+               ("root optional mapped event fields treat omission and null alike", rootOptionalAbsenceEquivalence),
+               ("non-optional mapped event fields still reject omission", nonOptionalRootStrict),
+               ("queue payloads preserve bare aliases", queueRoundTrip),
+               ("query aliases preserve bare domain types", queryAliasAgreement),
+               ("historical opaque MaybeText codec has parity with the generated codec", reportSucceeded comparison)
+             ]
+  forM_ assertions $ \(label, passed) ->
+    putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+maybeTextWire :: Bool
+maybeTextWire =
+  encodeMaybeTextMapped (MaybeText Nothing) == Null
+    && encodeMaybeTextMapped (MaybeText (Just "x")) == String "x"
+    && decodeMaybeTextMapped Null == Right (MaybeText Nothing)
+    && decodeMaybeTextMapped (String "x") == Right (MaybeText (Just "x"))
+
+textListWire :: Bool
+textListWire =
+  encodeTextListMapped value == Aeson.toJSON (["b", "a", "a"] :: [Text])
+    && decodeTextListMapped (encodeTextListMapped value) == Right value
+  where
+    value = TextList ["b", "a", "a"]
+
+textMapWire :: Bool
+textMapWire =
+  encodeTextMapMapped value == object ["alpha" .= String "one", "beta" .= String "two"]
+    && decodeTextMapMapped (encodeTextMapMapped value) == Right value
+  where
+    value = TextMap (Map.fromList [("alpha", "one"), ("beta", "two")])
+
+missingAliasDefaults :: Bool
+missingAliasDefaults =
+  decodeBareEnvelopeMapped withoutDefaults
+    == Right (BareEnvelope (MaybeText Nothing) (TextList []) (TextMap Map.empty) (NestedIds []))
+  where
+    withoutDefaults = object ["nestedIds" .= ([] :: [Value])]
+
+-- | Plan 295 found both spellings of absence in retained history -- 28 omitted
+-- keys and 39 explicit nulls -- which historical Aeson decoding had always read
+-- as 'Nothing'. A root 'Optional' mapped event field must therefore accept an
+-- omitted key and decode it exactly as an explicit null.
+rootOptionalAbsenceEquivalence :: Bool
+rootOptionalAbsenceEquivalence =
+  parseBareStoreEvent kind (deleteObjectField "optionalLabel" encoded) == Right event
+    && parseBareStoreEvent kind (insertObjectField "optionalLabel" Null encoded) == Right event
+  where
+    event =
+      StoredValue
+        ( StoredValueData
+            (MaybeText Nothing)
+            (TextList ["b", "a", "a"])
+            (TextMap Map.empty)
+            (BareEnvelope (MaybeText Nothing) (TextList []) (TextMap Map.empty) (NestedIds []))
+        )
+    kind = eventType bareStoreCodec event
+    encoded = encodeBareStoreEvent event
+
+-- | The equivalence above is scoped to root 'Optional' mapped fields. A
+-- non-optional mapped root carries no absent spelling, so omitting it stays a
+-- decode failure rather than defaulting.
+nonOptionalRootStrict :: Bool
+nonOptionalRootStrict =
+  isLeft (parseBareStoreEvent kind (deleteObjectField "labels" encoded))
+    && isLeft (parseBareStoreEvent kind (deleteObjectField "attributes" encoded))
+  where
+    event =
+      StoredValue
+        ( StoredValueData
+            (MaybeText Nothing)
+            (TextList ["b", "a", "a"])
+            (TextMap Map.empty)
+            (BareEnvelope (MaybeText Nothing) (TextList []) (TextMap Map.empty) (NestedIds []))
+        )
+    kind = eventType bareStoreCodec event
+    encoded = encodeBareStoreEvent event
+
+queueRoundTrip :: Bool
+queueRoundTrip = parseBareJob (encodeBareJob payload) == Right payload
+  where
+    payload = BareJob (MaybeText Nothing) (TextList ["b", "a", "a"])
+
+queryAliasAgreement :: Bool
+queryAliasAgreement =
+  queryInputIdentity (MaybeText (Just "query")) == MaybeText (Just "query")
+    && queryResultIdentity [TextList ["b", "a", "a"]] == [TextList ["b", "a", "a"]]
+
+queryInputIdentity :: BareLookupQueryInput -> MaybeText
+queryInputIdentity = id
+
+queryResultIdentity :: BareLookupQueryResult -> [TextList]
+queryResultIdentity = id
+
+deleteObjectField :: Key.Key -> Value -> Value
+deleteObjectField key (Object value) = Object (KeyMap.delete key value)
+deleteObjectField _ value = value
+
+insertObjectField :: Key.Key -> Value -> Value -> Value
+insertObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+insertObjectField _ _ value = value
diff --git a/test/conformance-bare-containers/fixtures/codec-compare/nothing.json b/test/conformance-bare-containers/fixtures/codec-compare/nothing.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/fixtures/codec-compare/nothing.json
@@ -0,0 +1,1 @@
+null
diff --git a/test/conformance-bare-containers/fixtures/codec-compare/present.json b/test/conformance-bare-containers/fixtures/codec-compare/present.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/fixtures/codec-compare/present.json
@@ -0,0 +1,1 @@
+"x"
diff --git a/test/conformance-bare-containers/keiro-dsl-cabal-fragment.context.bare-containers.txt b/test/conformance-bare-containers/keiro-dsl-cabal-fragment.context.bare-containers.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/keiro-dsl-cabal-fragment.context.bare-containers.txt
@@ -0,0 +1,64 @@
+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/bare-containers.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:
+    BareContainers.BareLookup.ReadModelHoles
+    BareContainers.BareStore.BehaviorHoles
+    BareContainers.ProjectionCatalog.ProjectionCatalogHoles
+    Conformance.BareContainers.Bindings
+    Generated.BareContainers.BareJobs.Queue
+    Generated.BareContainers.BareJobs.QueueCodec
+    Generated.BareContainers.BareJobs.QueuePolicy
+    Generated.BareContainers.BareLookup.QueryContract
+    Generated.BareContainers.BareLookup.ReadModel
+    Generated.BareContainers.BareLookup.ReadModelHarness
+    Generated.BareContainers.BareLookup.ReadModelTable
+    Generated.BareContainers.BareStore.BehaviorContract
+    Generated.BareContainers.BareStore.Codec
+    Generated.BareContainers.BareStore.Domain
+    Generated.BareContainers.BareStore.EventStream
+    Generated.BareContainers.BareStore.Harness
+    Generated.BareContainers.BareStore.Projection
+    Generated.BareContainers.BareStore.Transducer
+    Generated.BareContainers.BehaviorSourceMap
+    Generated.BareContainers.Nominals
+    Generated.BareContainers.Nominals.Internal
+    Generated.BareContainers.ProjectionCatalog
+    Generated.BareContainers.ReplayAudit
+    Generated.BareContainers.Structural.NominalLeaves
+    Generated.BareContainers.Structural.Shape.BareEnvelope
+    Generated.BareContainers.Structural.Shape.MaybeText
+    Generated.BareContainers.Structural.Shape.NestedIds
+    Generated.BareContainers.Structural.Shape.TextList
+    Generated.BareContainers.Structural.Shape.TextMap
+    Generated.BareContainers.StructuralConformance
+
+build-depends:
+    , aeson
+    , base
+    , containers
+    , effectful-core
+    , hasql-transaction
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , kiroku-store
+    , text
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.BareContainers.Bindings
+    Conformance.BareContainers.Domain
diff --git a/test/conformance-bare-containers/keiro-dsl-ledger.context.bare-containers.txt b/test/conformance-bare-containers/keiro-dsl-ledger.context.bare-containers.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-bare-containers/keiro-dsl-ledger.context.bare-containers.txt
@@ -0,0 +1,102 @@
+keiro-dsl scaffold record v1
+spec: keiro-dsl/test/fixtures/bare-containers.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 bare-containers structural conformance","path":"Generated/BareContainers/StructuralConformance.hs"}
+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context bare-containers behavior source map","path":"Generated/BareContainers/BehaviorSourceMap.hs"}
+module-role {"family":"BareEnvelope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural BareEnvelope (line 43)","path":"Generated/BareContainers/Structural/Shape/BareEnvelope.hs"}
+module-role {"family":"MaybeText","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural MaybeText (line 6)","path":"Generated/BareContainers/Structural/Shape/MaybeText.hs"}
+module-role {"family":"NestedIds","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural NestedIds (line 34)","path":"Generated/BareContainers/Structural/Shape/NestedIds.hs"}
+module-role {"family":"TextList","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural TextList (line 16)","path":"Generated/BareContainers/Structural/Shape/TextList.hs"}
+module-role {"family":"TextMap","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural TextMap (line 25)","path":"Generated/BareContainers/Structural/Shape/TextMap.hs"}
+module-role {"family":"Nominals","kind":"generated","ownerKind":"context","ownerName":"context bare-containers generated nominal declarations","path":"Generated/BareContainers/Nominals.hs"}
+module-role {"family":"Internal","kind":"generated","ownerKind":"context","ownerName":"context bare-containers generated nominal ID internals","path":"Generated/BareContainers/Nominals/Internal.hs"}
+module-role {"family":"NominalLeaves","kind":"generated","ownerKind":"context","ownerName":"context bare-containers structural nominal leaves","path":"Generated/BareContainers/Structural/NominalLeaves.hs"}
+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.BareContainers.Bindings","path":"Conformance/BareContainers/Bindings.hs"}
+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context bare-containers replay-audit assembly","path":"Generated/BareContainers/ReplayAudit.hs"}
+module-role {"family":"ProjectionCatalog","kind":"generated","ownerKind":"projection-catalog","ownerName":"projection-catalog bare-containers","path":"Generated/BareContainers/ProjectionCatalog.hs"}
+module-role {"family":"ProjectionCatalogHoles","kind":"hole","ownerKind":"projection-catalog","ownerName":"projection-catalog bare-containers","path":"BareContainers/ProjectionCatalog/ProjectionCatalogHoles.hs"}
+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/Domain.hs"}
+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/Codec.hs"}
+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/Transducer.hs"}
+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/BehaviorContract.hs"}
+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses BareStore (line 57)","path":"BareContainers/BareStore/BehaviorHoles.hs"}
+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/EventStream.hs"}
+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/Projection.hs"}
+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate BareStore (line 57)","path":"Generated/BareContainers/BareStore/Harness.hs"}
+module-role {"family":"Queue","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue bare_jobs (line 74)","path":"Generated/BareContainers/BareJobs/Queue.hs"}
+module-role {"family":"QueuePolicy","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue bare_jobs (line 74)","path":"Generated/BareContainers/BareJobs/QueuePolicy.hs"}
+module-role {"family":"QueueCodec","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue bare_jobs (line 74)","path":"Generated/BareContainers/BareJobs/QueueCodec.hs"}
+module-role {"family":"ReadModelTable","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel bare_lookup (line 115)","path":"Generated/BareContainers/BareLookup/ReadModelTable.hs"}
+module-role {"family":"QueryContract","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel bare_lookup (line 115)","path":"Generated/BareContainers/BareLookup/QueryContract.hs"}
+module-role {"family":"ReadModel","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel bare_lookup (line 115)","path":"Generated/BareContainers/BareLookup/ReadModel.hs"}
+module-role {"family":"ReadModelHoles","kind":"hole","ownerKind":"readmodel","ownerName":"readmodel bare_lookup (line 115)","path":"BareContainers/BareLookup/ReadModelHoles.hs"}
+module-role {"family":"ReadModelHarness","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel bare_lookup (line 115)","path":"Generated/BareContainers/BareLookup/ReadModelHarness.hs"}
+generated Generated/BareContainers/StructuralConformance.hs
+generated Generated/BareContainers/BehaviorSourceMap.hs
+generated Generated/BareContainers/Structural/Shape/BareEnvelope.hs
+generated Generated/BareContainers/Structural/Shape/MaybeText.hs
+generated Generated/BareContainers/Structural/Shape/NestedIds.hs
+generated Generated/BareContainers/Structural/Shape/TextList.hs
+generated Generated/BareContainers/Structural/Shape/TextMap.hs
+generated Generated/BareContainers/Nominals.hs
+generated Generated/BareContainers/Nominals/Internal.hs
+generated Generated/BareContainers/Structural/NominalLeaves.hs
+hole Conformance/BareContainers/Bindings.hs
+generated Generated/BareContainers/ReplayAudit.hs
+generated Generated/BareContainers/ProjectionCatalog.hs
+hole BareContainers/ProjectionCatalog/ProjectionCatalogHoles.hs
+generated Generated/BareContainers/BareStore/Domain.hs
+generated Generated/BareContainers/BareStore/Codec.hs
+generated Generated/BareContainers/BareStore/Transducer.hs
+generated Generated/BareContainers/BareStore/BehaviorContract.hs
+hole BareContainers/BareStore/BehaviorHoles.hs
+generated Generated/BareContainers/BareStore/EventStream.hs
+generated Generated/BareContainers/BareStore/Projection.hs
+generated Generated/BareContainers/BareStore/Harness.hs
+generated Generated/BareContainers/BareJobs/Queue.hs
+generated Generated/BareContainers/BareJobs/QueuePolicy.hs
+generated Generated/BareContainers/BareJobs/QueueCodec.hs
+generated Generated/BareContainers/BareLookup/ReadModelTable.hs
+generated Generated/BareContainers/BareLookup/QueryContract.hs
+generated Generated/BareContainers/BareLookup/ReadModel.hs
+hole BareContainers/BareLookup/ReadModelHoles.hs
+generated Generated/BareContainers/BareLookup/ReadModelHarness.hs
+mapping {"bindingSymbol":"Conformance.BareContainers.Bindings.bareEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.bare-containers.BareEnvelope.v1","mode":"structural","module":"Conformance.BareContainers.Domain","package":"keiro-dsl","schema":1,"specName":"BareEnvelope","type":"BareEnvelope"}
+mapping {"bindingSymbol":"Conformance.BareContainers.Bindings.maybeTextBinding","bindingVersion":"1","canonicalType":"conformance.bare-containers.MaybeText.v1","mode":"structural","module":"Conformance.BareContainers.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeText","type":"MaybeText"}
+mapping {"bindingSymbol":"Conformance.BareContainers.Bindings.nestedIdsBinding","bindingVersion":"1","canonicalType":"conformance.bare-containers.NestedIds.v1","mode":"structural","module":"Conformance.BareContainers.Domain","package":"keiro-dsl","schema":1,"specName":"NestedIds","type":"NestedIds"}
+mapping {"bindingSymbol":"Conformance.BareContainers.Bindings.textListBinding","bindingVersion":"1","canonicalType":"conformance.bare-containers.TextList.v1","mode":"structural","module":"Conformance.BareContainers.Domain","package":"keiro-dsl","schema":1,"specName":"TextList","type":"TextList"}
+mapping {"bindingSymbol":"Conformance.BareContainers.Bindings.textMapBinding","bindingVersion":"1","canonicalType":"conformance.bare-containers.TextMap.v1","mode":"structural","module":"Conformance.BareContainers.Domain","package":"keiro-dsl","schema":1,"specName":"TextMap","type":"TextMap"}
+id-domain id-domain|name=ItemId|contract=keiro-dsl/id-domain/typeid-v7/1|prefix=item|separator=_|json=canonical-json-text
+nominal-equality nominal-equality|name=ItemId|contract=keiro-dsl/nominal-equality/2|key=Text|domain=typeid-v7-text:item:keiro-dsl/id-domain/typeid-v7/1|owner=generated
+binding {"kind":"binding","mappedName":"BareEnvelope","module":"Conformance.BareContainers.Bindings","path":"attributes","schema":1,"signature":"bareEnvelopeBinding.attributes :: TextMap","symbol":"bareEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"BareEnvelope","module":"Conformance.BareContainers.Bindings","path":"labels","schema":1,"signature":"bareEnvelopeBinding.labels :: TextList","symbol":"bareEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"BareEnvelope","module":"Conformance.BareContainers.Bindings","path":"nestedIds","schema":1,"signature":"bareEnvelopeBinding.nestedIds :: NestedIds","symbol":"bareEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"BareEnvelope","module":"Conformance.BareContainers.Bindings","path":"optionalLabel","schema":1,"signature":"bareEnvelopeBinding.optionalLabel :: MaybeText","symbol":"bareEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"BareEnvelope","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"bareEnvelopeFixtures :: FixtureCases Conformance.BareContainers.Domain.BareEnvelope","symbol":"bareEnvelopeFixtures"}
+binding {"kind":"binding","mappedName":"MaybeText","module":"Conformance.BareContainers.Bindings","path":"value","schema":1,"signature":"maybeTextBinding.value :: Maybe (Text)","symbol":"maybeTextBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeText","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"maybeTextFixtures :: FixtureCases Conformance.BareContainers.Domain.MaybeText","symbol":"maybeTextFixtures"}
+binding {"kind":"initial-value","mappedName":"MaybeText","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"initialMaybeText :: Conformance.BareContainers.Domain.MaybeText","symbol":"initialMaybeText"}
+binding {"kind":"binding","mappedName":"NestedIds","module":"Conformance.BareContainers.Bindings","path":"value","schema":1,"signature":"nestedIdsBinding.value :: [Maybe (ItemId)]","symbol":"nestedIdsBinding"}
+binding {"kind":"fixtures","mappedName":"NestedIds","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"nestedIdsFixtures :: FixtureCases Conformance.BareContainers.Domain.NestedIds","symbol":"nestedIdsFixtures"}
+binding {"kind":"binding","mappedName":"TextList","module":"Conformance.BareContainers.Bindings","path":"value","schema":1,"signature":"textListBinding.value :: [Text]","symbol":"textListBinding"}
+binding {"kind":"fixtures","mappedName":"TextList","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"textListFixtures :: FixtureCases Conformance.BareContainers.Domain.TextList","symbol":"textListFixtures"}
+binding {"kind":"binding","mappedName":"TextMap","module":"Conformance.BareContainers.Bindings","path":"value","schema":1,"signature":"textMapBinding.value :: Map Text (Text)","symbol":"textMapBinding"}
+binding {"kind":"fixtures","mappedName":"TextMap","module":"Conformance.BareContainers.Bindings","path":null,"schema":1,"signature":"textMapFixtures :: FixtureCases Conformance.BareContainers.Domain.TextMap","symbol":"textMapFixtures"}
+behavior {"aggregate":"BareStore","command":"Store","evidence":"generated-authoritative","key":"behavior-v1-b3fa753a88b62d6d","kind":"live-transition","outputs":[{"command":"Store","ownership":"generated-command-identity"}],"source":"Empty"}
+behavior {"aggregate":"BareStore","command":"Store","evidence":"generated-authoritative","key":"behavior-v1-b728b85baa41bc71","kind":"required-rejection","outputs":[],"source":"Stored"}
+projection-catalog-fact cursor|bare_lookup|bare-writer|115
+projection-catalog-fact delivery|bare_writer|subscription|103
+projection-catalog-fact freshness|bare_lookup|wait-for-head:entire-log|115
+projection-catalog-fact group|bare_rebuild|bare_table|bare_table|98
+projection-catalog-fact owner|bare_writer|all|bare_rebuild|bare_table|10|bare-writer|bare-writer-v1|from-beginning|explicit|103
+projection-catalog-fact query|bare_lookup|bare_rebuild|bare_table|bare_table|115
+projection-catalog-fact supply|bare_lookup|bare_writer|bare_rebuild|bare_table|115|103
+projection-catalog-fact target|bare_table|public|bare_values|clear||92
+query-contract-baseline v1
+query-contract {"mappedDependencies":["MaybeText"],"position":"input","readModel":"bare_lookup","typeExpression":"MaybeText"}
+query-contract {"mappedDependencies":["TextList"],"position":"result","readModel":"bare_lookup","typeExpression":"List TextList"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"BareStore","kind":"consumer-build"},{"aggregate":"BareStore","kind":"private-event-history"}],"consumerEvidence":[{"consumer":"BareStore","operation":null,"path":"BareStore command Store .envelope : BareEnvelope","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .envelope : BareEnvelope","surface":"private-event-payload"}],"consumers":["BareStore"],"declaration":"BareEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.BareContainers.Domain:BareEnvelope\u001fConformance.BareContainers.Bindings.bareEnvelopeBinding\u001f1\u001fconformance.bare-containers.BareEnvelope.v1\u001fConformance.BareContainers.Bindings.bareEnvelopeFixtures\u001f\u001fb421af79f12c9602\u001frecord:BareEnvelope:attributes=attributes,labels=labels,nestedIds=nestedIds,optionalLabel=optionalLabel"},{"consequences":[{"consumer":"BareStore","kind":"consumer-build"},{"consumer":"workqueue:bare_jobs","kind":"consumer-build"},{"consumer":"read-model-query:bare_lookup:input","kind":"consumer-build"},{"aggregate":"BareStore","kind":"private-event-history"},{"aggregate":"BareStore","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"bare_jobs"},{"kind":"query-api","position":"input","readModel":"bare_lookup"}],"consumerEvidence":[{"consumer":"BareStore","operation":null,"path":"BareStore command Store .envelope : BareEnvelope .optionalLabel : MaybeText","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore command Store .optionalLabel : MaybeText","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .envelope : BareEnvelope .optionalLabel : MaybeText","surface":"private-event-payload"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .optionalLabel : MaybeText","surface":"private-event-payload"},{"consumer":"BareStore","operation":null,"path":"BareStore register current : MaybeText","surface":"snapshot-register"},{"consumer":"workqueue:bare_jobs","operation":null,"path":"workqueue bare_jobs payload .optionalLabel : MaybeText","surface":"workqueue-payload"},{"consumer":"read-model-query:bare_lookup:input","operation":null,"path":"readmodel bare_lookup query input : MaybeText","surface":"read-model-query-input"}],"consumers":["BareStore","workqueue:bare_jobs","read-model-query:bare_lookup:input"],"declaration":"MaybeText","identity":"structural\u001fkeiro-dsl:Conformance.BareContainers.Domain:MaybeText\u001fConformance.BareContainers.Bindings.maybeTextBinding\u001f1\u001fconformance.bare-containers.MaybeText.v1\u001fConformance.BareContainers.Bindings.maybeTextFixtures\u001fConformance.BareContainers.Bindings.initialMaybeText\u001fc289b01d5d2741d7\u001fvalue:Optional(Text)"},{"consequences":[{"consumer":"BareStore","kind":"consumer-build"},{"aggregate":"BareStore","kind":"private-event-history"}],"consumerEvidence":[{"consumer":"BareStore","operation":null,"path":"BareStore command Store .envelope : BareEnvelope .nestedIds : NestedIds","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .envelope : BareEnvelope .nestedIds : NestedIds","surface":"private-event-payload"}],"consumers":["BareStore"],"declaration":"NestedIds","identity":"structural\u001fkeiro-dsl:Conformance.BareContainers.Domain:NestedIds\u001fConformance.BareContainers.Bindings.nestedIdsBinding\u001f1\u001fconformance.bare-containers.NestedIds.v1\u001fConformance.BareContainers.Bindings.nestedIdsFixtures\u001f\u001fe77f742023c9baac\u001fvalue:List(Optional(Nominal(ItemId)))"},{"consequences":[{"consumer":"BareStore","kind":"consumer-build"},{"consumer":"workqueue:bare_jobs","kind":"consumer-build"},{"consumer":"read-model-query:bare_lookup:result","kind":"consumer-build"},{"aggregate":"BareStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"bare_jobs"},{"kind":"query-api","position":"result","readModel":"bare_lookup"}],"consumerEvidence":[{"consumer":"BareStore","operation":null,"path":"BareStore command Store .envelope : BareEnvelope .labels : TextList","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore command Store .labels : TextList","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .envelope : BareEnvelope .labels : TextList","surface":"private-event-payload"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .labels : TextList","surface":"private-event-payload"},{"consumer":"workqueue:bare_jobs","operation":null,"path":"workqueue bare_jobs payload .labels : TextList","surface":"workqueue-payload"},{"consumer":"read-model-query:bare_lookup:result","operation":null,"path":"readmodel bare_lookup query result : TextList []","surface":"read-model-query-result"}],"consumers":["BareStore","workqueue:bare_jobs","read-model-query:bare_lookup:result"],"declaration":"TextList","identity":"structural\u001fkeiro-dsl:Conformance.BareContainers.Domain:TextList\u001fConformance.BareContainers.Bindings.textListBinding\u001f1\u001fconformance.bare-containers.TextList.v1\u001fConformance.BareContainers.Bindings.textListFixtures\u001f\u001fab685a6d705cec6f\u001fvalue:List(Text)"},{"consequences":[{"consumer":"BareStore","kind":"consumer-build"},{"aggregate":"BareStore","kind":"private-event-history"}],"consumerEvidence":[{"consumer":"BareStore","operation":null,"path":"BareStore command Store .attributes : TextMap","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore command Store .envelope : BareEnvelope .attributes : TextMap","surface":"aggregate-command"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .attributes : TextMap","surface":"private-event-payload"},{"consumer":"BareStore","operation":null,"path":"BareStore event StoredValue .envelope : BareEnvelope .attributes : TextMap","surface":"private-event-payload"}],"consumers":["BareStore"],"declaration":"TextMap","identity":"structural\u001fkeiro-dsl:Conformance.BareContainers.Domain:TextMap\u001fConformance.BareContainers.Bindings.textMapBinding\u001f1\u001fconformance.bare-containers.TextMap.v1\u001fConformance.BareContainers.Bindings.textMapFixtures\u001f\u001fd0faf271bc72da1f\u001fvalue:Map(Text)"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["BareEnvelope","MaybeText","NestedIds","TextList","TextMap"]}
diff --git a/test/conformance-baseline.json b/test/conformance-baseline.json
--- a/test/conformance-baseline.json
+++ b/test/conformance-baseline.json
@@ -30,6 +30,12 @@
     {"component": "keiro-dsl-conformance-workspace-nominals", "directory": "test/conformance-workspace-nominals", "source": "test/fixtures/workspace-nominals/service.keiro-workspace", "generation": "workspace", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 cross-member structural nominal ownership proof"},
     {"component": "keiro-dsl-conformance-structural", "directory": "test/conformance-structural", "source": "test/fixtures/structural-conformance.keiro", "generation": "source", "role": "published-compatibility", "languageVersion": 4, "reason": "published Language 4 structural mapping proof"},
     {"component": "keiro-dsl-conformance-structural-nominals", "directory": "test/conformance-structural-nominals", "source": "test/fixtures/structural-nominal-leaves.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 structural nominal admission proof"},
+    {"component": "keiro-dsl-conformance-id-admission-domains", "directory": "test/conformance-id-admission-domains", "source": "test/fixtures/id-admission-domains.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 explicit UUIDv5-or-v7 admission across aggregate, structural, keyed-map, queue, and contract boundaries"},
+    {"component": "keiro-dsl-conformance-checked-mapping-replay", "directory": "test/conformance-checked-mapping-replay", "source": "test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace", "generation": "workspace", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 integrated retained-history proof for checked dates, text sets, base16 bytes, UUIDv5-or-v7 identities, consumer bindings, aggregate replay, workflow journals, and process recovery observations"},
+    {"component": "keiro-dsl-conformance-bare-containers", "directory": "test/conformance-bare-containers", "source": "test/fixtures/bare-containers.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 direct optional, list, text-map, nested nominal, replay, and historical-codec parity proof"},
+    {"component": "keiro-dsl-conformance-calendar-days", "directory": "test/conformance-calendar-days", "source": "test/fixtures/calendar-days.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 full-carrier calendar-day codec, generated surface, replay, and historical normalization proof"},
+    {"component": "keiro-dsl-conformance-refined-base16", "directory": "test/conformance-refined-base16", "source": "test/fixtures/refined-base16.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 checked base16-byte refinement, generated surface, replay, and historical codec parity proof"},
+    {"component": "keiro-dsl-conformance-structural-text-sets", "directory": "test/conformance-structural-text-sets", "source": "test/fixtures/structural-text-sets.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 structural text-set codec, normalization, generated surface, and strict replay proof"},
     {"component": "keiro-dsl-conformance-mapped-queue", "directory": "test/conformance-mapped-queue", "source": "test/fixtures/mapped-workqueue.keiro", "generation": "source", "role": "stable-primary", "languageVersion": 5, "reason": "stable mapped workqueue structural, opaque, required-nullable, and schema-version-1 envelope proof"},
     {"component": "keiro-dsl-conformance-mapped-readmodel", "directory": "test/conformance-mapped-readmodel", "source": "test/fixtures/mapped-readmodel.keiro", "generation": "source", "role": "stable-primary", "languageVersion": 5, "reason": "stable mapped read-model query contract, workspace provenance, and projection catalog proof"},
     {"component": "keiro-dsl-conformance-codec-compare", "directory": "test/conformance-codec-compare", "source": null, "generation": "none", "role": "version-independent", "reason": "codec comparison helper proof has no source-language fixture"},
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.17.0.0 (language keiro-dsl 4) from context behavior-complete behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context behavior-complete replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural StartPayload; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context behavior-complete structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context behavior-complete mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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/CalendarDays/CalendarLookup/ReadModelHoles.hs b/test/conformance-calendar-days/CalendarDays/CalendarLookup/ReadModelHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/CalendarDays/CalendarLookup/ReadModelHoles.hs
@@ -0,0 +1,14 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module CalendarDays.CalendarLookup.ReadModelHoles
+  ( calendarLookupQuery
+  ) where
+
+import Generated.CalendarDays.CalendarLookup.ReadModelTable (calendarLookupQualifiedTable)
+import Generated.CalendarDays.CalendarLookup.QueryContract (CalendarLookupQueryInput, CalendarLookupQueryResult)
+import Hasql.Transaction qualified as Tx
+
+-- HOLE: query "public"."calendar_values" via calendarLookupQualifiedTable; never rely on search_path.
+-- The generated QueryContract owns query input/result type identity.
+-- Declared columns:
+calendarLookupQuery :: CalendarLookupQueryInput -> Tx.Transaction CalendarLookupQueryResult
+calendarLookupQuery _input = calendarLookupQualifiedTable `seq` error "HOLE: fill calendar_lookup query"
diff --git a/test/conformance-calendar-days/CalendarDays/CalendarStore/BehaviorHoles.hs b/test/conformance-calendar-days/CalendarDays/CalendarStore/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/CalendarDays/CalendarStore/BehaviorHoles.hs
@@ -0,0 +1,10 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module CalendarDays.CalendarStore.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.CalendarDays.CalendarStore.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-81c1074e5cad73be") -- CalendarStoreStored x StoreDate: required rejection
+  , Pending (BehaviorKey "behavior-v1-8a6ce5ac60391741") -- CalendarStoreEmpty x StoreDate: live transition
+  ]
diff --git a/test/conformance-calendar-days/CalendarDays/ProjectionCatalog/ProjectionCatalogHoles.hs b/test/conformance-calendar-days/CalendarDays/ProjectionCatalog/ProjectionCatalogHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/CalendarDays/ProjectionCatalog/ProjectionCatalogHoles.hs
@@ -0,0 +1,23 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module CalendarDays.ProjectionCatalog.ProjectionCatalogHoles
+  ( CalendarWriterEvent (..)
+  , applyCalendarWriterLive
+  , calendarWriterIdempotencyKey
+  , applyCalendarWriterReplay
+  , decodeCalendarWriterReplay
+  ) where
+
+import Hasql.Transaction qualified as Tx
+import Keiro.Projection.Catalog qualified as Catalog
+import Kiroku.Store.Types (EventId, RecordedEvent)
+
+-- Projection owner calendar_writer (order 10).
+data CalendarWriterEvent = CalendarWriterEvent
+applyCalendarWriterLive :: RecordedEvent -> Tx.Transaction ()
+applyCalendarWriterLive = error "HOLE: fill calendar_writer live apply"
+calendarWriterIdempotencyKey :: RecordedEvent -> EventId
+calendarWriterIdempotencyKey = error "HOLE: return the durable event id for calendar_writer"
+decodeCalendarWriterReplay :: RecordedEvent -> Catalog.ReplayDecodeResult CalendarWriterEvent
+decodeCalendarWriterReplay = error "HOLE: classify and decode every calendar_writer source event"
+applyCalendarWriterReplay :: CalendarWriterEvent -> RecordedEvent -> Tx.Transaction ()
+applyCalendarWriterReplay = error "HOLE: fill calendar_writer replay apply without live-only side effects"
diff --git a/test/conformance-calendar-days/Conformance/CalendarDays/Bindings.hs b/test/conformance-calendar-days/Conformance/CalendarDays/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Conformance/CalendarDays/Bindings.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
+
+-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
+-- and never overwrites it. Fill each HOLE and run the generated harness.
+module Conformance.CalendarDays.Bindings (
+    maybeLocalDayFixtures
+  , maybeLocalDayBinding
+  , initialLocalDay
+  , localDayFixtures
+  , localDayBinding
+  , calendarEnvelopeFixtures
+  , calendarEnvelopeBinding
+) where
+
+import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
+import Conformance.CalendarDays.Domain qualified as Domain
+import Generated.CalendarDays.Structural.Shape.CalendarEnvelope qualified as ShapeCalendarEnvelope
+import Generated.CalendarDays.Structural.Shape.LocalDay qualified as ShapeLocalDay
+import Generated.CalendarDays.Structural.Shape.MaybeLocalDay qualified as ShapeMaybeLocalDay
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Data.Time.Calendar (fromGregorian)
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+-- HOLE: provide deterministic labelled conformance fixtures for MaybeLocalDay
+maybeLocalDayFixtures :: FixtureCases MaybeLocalDay
+maybeLocalDayFixtures =
+  FixtureCases
+    ( ("absent", Domain.MaybeLocalDay Nothing)
+        :| [ ("leap-day", Domain.MaybeLocalDay (Just (fromGregorian 2000 2 29))),
+             ("year-zero", Domain.MaybeLocalDay (Just (fromGregorian 0 1 1)))
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+maybeLocalDayBinding :: StructuralBinding MaybeLocalDay ShapeMaybeLocalDay.MaybeLocalDayShape
+maybeLocalDayBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.MaybeLocalDay value -> value
+    , bindingFromShape = \case
+      value -> Domain.MaybeLocalDay value
+    }
+
+-- HOLE: provide the initial register value for LocalDay
+initialLocalDay :: LocalDay
+initialLocalDay = Domain.LocalDay (fromGregorian 1970 1 1)
+
+-- HOLE: provide deterministic labelled conformance fixtures for LocalDay
+localDayFixtures :: FixtureCases LocalDay
+localDayFixtures =
+  FixtureCases
+    ( ("epoch", initialLocalDay)
+        :| [ ("leap-day", Domain.LocalDay (fromGregorian 2000 2 29)),
+             ("year-zero", Domain.LocalDay (fromGregorian 0 12 31)),
+             ("negative-year", Domain.LocalDay (fromGregorian (-1) 1 1)),
+             ("extended-year", Domain.LocalDay (fromGregorian 12345678901234567890 6 30))
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+localDayBinding :: StructuralBinding LocalDay ShapeLocalDay.LocalDayShape
+localDayBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.LocalDay value -> value
+    , bindingFromShape = \case
+      value -> Domain.LocalDay value
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for CalendarEnvelope
+calendarEnvelopeFixtures :: FixtureCases CalendarEnvelope
+calendarEnvelopeFixtures =
+  FixtureCases
+    ( ( "absent-optional",
+        Domain.CalendarEnvelope
+          (fromGregorian 2000 2 29)
+          Nothing
+          (Domain.MaybeLocalDay Nothing)
+          [fromGregorian 1900 2 28, fromGregorian 1900 3 1]
+          (Map.fromList [("year-zero", fromGregorian 0 1 1)])
+      )
+        :| [ ( "complete-carrier",
+               Domain.CalendarEnvelope
+                 (fromGregorian (-12345) 12 31)
+                 (Just (fromGregorian 12345678901234567890 6 30))
+                 (Domain.MaybeLocalDay (Just (fromGregorian 2026 1 31)))
+                 [fromGregorian 2026 1 31, fromGregorian 2026 2 1]
+                 (Map.fromList [("leap", fromGregorian 2000 2 29)])
+             )
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+calendarEnvelopeBinding :: StructuralBinding CalendarEnvelope ShapeCalendarEnvelope.CalendarEnvelopeShape
+calendarEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.CalendarEnvelope primaryValue optionalDayValue namedOptionalValue sequenceValue labelledValue ->
+        ShapeCalendarEnvelope.CalendarEnvelope
+          primaryValue
+          optionalDayValue
+          (bindingToShape maybeLocalDayBinding namedOptionalValue)
+          sequenceValue
+          labelledValue
+    , bindingFromShape = \case
+      ShapeCalendarEnvelope.CalendarEnvelope primaryValue optionalDayValue namedOptionalValue sequenceValue labelledValue ->
+        Domain.CalendarEnvelope
+          primaryValue
+          optionalDayValue
+          (bindingFromShape maybeLocalDayBinding namedOptionalValue)
+          sequenceValue
+          labelledValue
+    }
diff --git a/test/conformance-calendar-days/Conformance/CalendarDays/Domain.hs b/test/conformance-calendar-days/Conformance/CalendarDays/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Conformance/CalendarDays/Domain.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Conformance.CalendarDays.Domain where
+
+import Data.Aeson (FromJSON, ToJSON)
+import Data.Map.Strict (Map)
+import Data.Proxy (Proxy)
+import Data.Text (Text)
+import Data.Time.Calendar (Day)
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName (..))
+
+newtype LocalDay = LocalDay {unLocalDay :: Day}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName LocalDay where
+  canonicalTypeName :: Proxy LocalDay -> Text
+  canonicalTypeName _ = "conformance.calendar-days.LocalDay.v1"
+
+newtype MaybeLocalDay = MaybeLocalDay {unMaybeLocalDay :: Maybe Day}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeLocalDay where
+  canonicalTypeName :: Proxy MaybeLocalDay -> Text
+  canonicalTypeName _ = "conformance.calendar-days.MaybeLocalDay.v1"
+
+data CalendarEnvelope = CalendarEnvelope
+  { primary :: !Day,
+    optionalDay :: !(Maybe Day),
+    namedOptional :: !MaybeLocalDay,
+    sequence :: ![Day],
+    labelled :: !(Map Text Day)
+  }
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName CalendarEnvelope where
+  canonicalTypeName :: Proxy CalendarEnvelope -> Text
+  canonicalTypeName _ = "conformance.calendar-days.CalendarEnvelope.v1"
diff --git a/test/conformance-calendar-days/Conformance/CalendarDays/Historical.hs b/test/conformance-calendar-days/Conformance/CalendarDays/Historical.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Conformance/CalendarDays/Historical.hs
@@ -0,0 +1,31 @@
+module Conformance.CalendarDays.Historical
+  ( historicalLocalDayCodec,
+    historicalMaybeLocalDayCodec,
+  )
+where
+
+import Conformance.CalendarDays.Domain (LocalDay (..), MaybeLocalDay (..))
+import Data.Aeson (parseJSON, toJSON)
+import Data.Aeson.Types (parseEither)
+import Data.Text qualified as T
+import Keiro.Dsl.CodecCompare (HistoricalCodec (..))
+
+-- These repository fixtures model the consumer's pre-adoption Aeson-derived
+-- codecs. They are migration evidence, never a runtime fallback.
+historicalLocalDayCodec :: HistoricalCodec LocalDay
+historicalLocalDayCodec =
+  HistoricalCodec
+    { identity = "conformance.calendar-days.LocalDay.aeson-day",
+      version = "aeson-2.2",
+      encode = \(LocalDay value) -> toJSON value,
+      decode = either (Left . T.pack) (Right . LocalDay) . parseEither parseJSON
+    }
+
+historicalMaybeLocalDayCodec :: HistoricalCodec MaybeLocalDay
+historicalMaybeLocalDayCodec =
+  HistoricalCodec
+    { identity = "conformance.calendar-days.MaybeLocalDay.aeson-day",
+      version = "aeson-2.2",
+      encode = \(MaybeLocalDay value) -> toJSON value,
+      decode = either (Left . T.pack) (Right . MaybeLocalDay) . parseEither parseJSON
+    }
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs b/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs
@@ -0,0 +1,30 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context calendar-days behavior source map; do not edit.
+module Generated.CalendarDays.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-81c1074e5cad73be" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/calendar-days.keiro" 41 16)
+  "behavior-v1-8a6ce5ac60391741" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/calendar-days.keiro" 47 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-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs
@@ -0,0 +1,130 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit.
+module Generated.CalendarDays.CalendarJobs.Queue
+  ( CalendarJob (..)
+  , encodeCalendarJob
+  , parseCalendarJob
+  , encodeCalendarEnvelopeMapped
+  , decodeCalendarEnvelopeMapped
+  , encodeLocalDayMapped
+  , decodeLocalDayMapped
+  , encodeMaybeLocalDayMapped
+  , decodeMaybeLocalDayMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)
+import Conformance.CalendarDays.Bindings qualified as Bindings
+import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
+import Generated.CalendarDays.Structural.Shape.CalendarEnvelope qualified as ShapeCalendarEnvelope
+import Generated.CalendarDays.Structural.Shape.LocalDay qualified as ShapeLocalDay
+import Generated.CalendarDays.Structural.Shape.MaybeLocalDay qualified as ShapeMaybeLocalDay
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "calendar_jobs"
+queueDlq = "calendar_jobs_dlq"
+queueTable = "pgmq.q_calendar_jobs"
+
+data CalendarJob = CalendarJob
+  { day :: !LocalDay
+  , optionalDay :: !MaybeLocalDay
+  , envelope :: !CalendarEnvelope
+  }
+  deriving stock (Eq, Show)
+
+encodeCalendarEnvelopeMapped :: CalendarEnvelope -> Value
+encodeCalendarEnvelopeMapped = encodeCalendarEnvelopeShape . bindingToShape Bindings.calendarEnvelopeBinding
+
+parseCalendarEnvelopeMapped :: Value -> Parser CalendarEnvelope
+parseCalendarEnvelopeMapped value = bindingFromShape Bindings.calendarEnvelopeBinding <$> parseCalendarEnvelopeShape value
+
+decodeCalendarEnvelopeMapped :: Value -> Either Text CalendarEnvelope
+decodeCalendarEnvelopeMapped = mapLeftText . parseEither parseCalendarEnvelopeMapped
+
+encodeCalendarEnvelopeShape :: ShapeCalendarEnvelope.CalendarEnvelopeShape -> Value
+encodeCalendarEnvelopeShape shape =
+  object
+      [ "primary" .= encodeCalendarDay (shape.primary)
+      , "optionalDay" .= maybe Null (\item0 -> encodeCalendarDay (item0)) (shape.optionalDay)
+      , "namedOptional" .= encodeMaybeLocalDayShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeCalendarDay (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeCalendarDay (item0)) (shape.labelled))
+      ]
+
+parseCalendarEnvelopeShape :: Value -> Parser ShapeCalendarEnvelope.CalendarEnvelopeShape
+parseCalendarEnvelopeShape = withObject "CalendarEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "CalendarEnvelope" ["primary", "optionalDay", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeCalendarEnvelope.CalendarEnvelope
+    <$> explicitParseField (parseCalendarDay) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseCalendarDay) other0) objectValue "optionalDay"
+    <*> explicitParseField (parseMaybeLocalDayShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseCalendarDay) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseCalendarDay) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeLocalDayMapped :: LocalDay -> Value
+encodeLocalDayMapped = encodeLocalDayShape . bindingToShape Bindings.localDayBinding
+
+parseLocalDayMapped :: Value -> Parser LocalDay
+parseLocalDayMapped value = bindingFromShape Bindings.localDayBinding <$> parseLocalDayShape value
+
+decodeLocalDayMapped :: Value -> Either Text LocalDay
+decodeLocalDayMapped = mapLeftText . parseEither parseLocalDayMapped
+
+encodeLocalDayShape :: ShapeLocalDay.LocalDayShape -> Value
+encodeLocalDayShape value = encodeCalendarDay (value)
+
+parseLocalDayShape :: Value -> Parser ShapeLocalDay.LocalDayShape
+parseLocalDayShape = parseCalendarDay
+
+encodeMaybeLocalDayMapped :: MaybeLocalDay -> Value
+encodeMaybeLocalDayMapped = encodeMaybeLocalDayShape . bindingToShape Bindings.maybeLocalDayBinding
+
+parseMaybeLocalDayMapped :: Value -> Parser MaybeLocalDay
+parseMaybeLocalDayMapped value = bindingFromShape Bindings.maybeLocalDayBinding <$> parseMaybeLocalDayShape value
+
+decodeMaybeLocalDayMapped :: Value -> Either Text MaybeLocalDay
+decodeMaybeLocalDayMapped = mapLeftText . parseEither parseMaybeLocalDayMapped
+
+encodeMaybeLocalDayShape :: ShapeMaybeLocalDay.MaybeLocalDayShape -> Value
+encodeMaybeLocalDayShape value = maybe Null (\item0 -> encodeCalendarDay (item0)) (value)
+
+parseMaybeLocalDayShape :: Value -> Parser ShapeMaybeLocalDay.MaybeLocalDayShape
+parseMaybeLocalDayShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseCalendarDay) other0
+
+encodeCalendarJob :: CalendarJob -> Value
+encodeCalendarJob payload =
+  object
+    [ "day" .= encodeLocalDayMapped payload.day
+    , "optional_day" .= encodeMaybeLocalDayMapped payload.optionalDay
+    , "envelope" .= encodeCalendarEnvelopeMapped payload.envelope
+    ]
+
+parseCalendarJob :: Value -> Either Text CalendarJob
+parseCalendarJob = mapLeftText . parseEither (withObject "CalendarJob" go)
+  where
+    go objectValue = CalendarJob <$> explicitParseField (parseLocalDayMapped) objectValue "day" <*> explicitParseField (parseMaybeLocalDayMapped) objectValue "optional_day" <*> explicitParseField (parseCalendarEnvelopeMapped) objectValue "envelope"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.CalendarDays.CalendarJobs.QueueCodec (calendarJobsPayloadCodec, calendarJobsJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.CalendarDays.CalendarJobs.Queue (CalendarJob, encodeCalendarJob, parseCalendarJob)
+
+calendarJobsPayloadCodec :: Codec CalendarJob
+calendarJobsPayloadCodec =
+  Codec
+    { eventTypes = EventType "CalendarJob" :| []
+    , eventType = \_ -> EventType "CalendarJob"
+    , schemaVersion = 1
+    , encode = encodeCalendarJob
+    , decode = \_ -> parseCalendarJob
+    , upcasters = []
+    }
+
+calendarJobsJobCodec :: JobCodec CalendarJob
+calendarJobsJobCodec = keiroJobCodec calendarJobsPayloadCodec
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit.
+module Generated.CalendarDays.CalendarJobs.QueuePolicy
+  ( CalendarJobsOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data CalendarJobsOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: CalendarJobsOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs
@@ -0,0 +1,10 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.
+module Generated.CalendarDays.CalendarLookup.QueryContract
+  ( CalendarLookupQueryInput
+  , CalendarLookupQueryResult
+  ) where
+
+import Conformance.CalendarDays.Domain (CalendarEnvelope, MaybeLocalDay)
+
+type CalendarLookupQueryInput = MaybeLocalDay
+type CalendarLookupQueryResult = CalendarEnvelope
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs
@@ -0,0 +1,28 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.
+module Generated.CalendarDays.CalendarLookup.ReadModel
+  ( calendarLookupReadModel
+  , calendarLookupQualifiedTable
+  ) where
+
+import Generated.CalendarDays.CalendarLookup.ReadModelTable (calendarLookupQualifiedTable)
+import Generated.CalendarDays.CalendarLookup.QueryContract (CalendarLookupQueryInput, CalendarLookupQueryResult)
+import CalendarDays.CalendarLookup.ReadModelHoles (calendarLookupQuery)
+import Keiro.ReadModel (QueryCursorAuthority (..), ReadModel, ReadModelBlueprint (..), HeadScope (..), headWaitingReadModel)
+
+calendarLookupReadModel :: ReadModel CalendarLookupQueryInput CalendarLookupQueryResult
+calendarLookupReadModel =
+  case headWaitingReadModel EntireVisibleLog calendarLookupReadModelBlueprint of
+    Left definitionError -> error ("keiro-dsl generated an invalid waiting read model: " <> show definitionError)
+    Right model -> model
+
+calendarLookupReadModelBlueprint :: ReadModelBlueprint CalendarLookupQueryInput CalendarLookupQueryResult
+calendarLookupReadModelBlueprint =
+  ReadModelBlueprint
+    { name = "calendar-days-calendar-lookup"
+    , tableName = "calendar_values"
+    , schema = "public"
+    , version = 1
+    , shapeHash = "fnv1a:3c07a19c552c3547"
+    , cursorAuthority = DurableQueryCursor "calendar-writer"
+    , query = calendarLookupQuery
+    }
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
@@ -0,0 +1,57 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text qualified as T
+import Data.List.NonEmpty qualified as NE
+import Generated.CalendarDays.ProjectionCatalog qualified as ProjectionCatalog
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel (ReadModel (..), readModelCursorAuthority, readModelDefaultFreshness)
+
+-- | (fact, expected from notation, actual generated runtime value).
+readModelFacts :: [(String, String, String)]
+readModelFacts =
+  [ ("registryName", "calendar-days-calendar-lookup", T.unpack calendarLookupReadModel.name)
+  , ("shapeHash", "fnv1a:3c07a19c552c3547", T.unpack calendarLookupReadModel.shapeHash)
+  , ("freshness", "WaitForHead EntireVisibleLog", show (readModelDefaultFreshness calendarLookupReadModel))
+  , ("cursorAuthority", "DurableQueryCursor \"calendar-writer\"", show (readModelCursorAuthority calendarLookupReadModel))
+  ]
+    <> catalogFactsAgainst ProjectionCatalog.projectionCatalogRegistrations ProjectionCatalog.projectionCatalogAsyncRegistrations ProjectionCatalog.projectionCatalogQuerySupplies
+
+catalogFactsAgainst :: [Catalog.CatalogRegistration] -> [Catalog.AsyncProjectionRegistration] -> [Catalog.ResolvedQuerySupply] -> [(String, String, String)]
+catalogFactsAgainst registrations asyncRegistrations supplies =
+  [ ("catalogRegistration", "calendar-days-calendar-lookup|1|fnv1a:3c07a19c552c3547|calendar_rebuild", renderRegistration [entry | entry <- registrations, Catalog.queryModelIdText entry.queryModelId == "calendar_lookup"])
+  , ("querySupply", "calendar_writer|calendar_rebuild|calendar_table", renderSupply [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "calendar_lookup"])
+  , ("projectionDelivery", "subscription", renderDelivery [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "calendar_lookup"])
+  , ("asyncRegistration:calendar_writer", "calendar-writer|calendar-writer-v1", renderAsync [entry | entry <- asyncRegistrations, Catalog.projectionIdText entry.projectionId == "calendar_writer"])
+  ]
+
+renderRegistration :: [Catalog.CatalogRegistration] -> String
+renderRegistration [entry] = T.unpack entry.registryName <> "|" <> show entry.version <> "|" <> T.unpack entry.shapeHash <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.rebuildGroupId)
+renderRegistration _ = "missing"
+
+renderSupply :: [Catalog.ResolvedQuerySupply] -> String
+renderSupply [entry] = T.unpack (Catalog.projectionIdText entry.resolvedProjectionId) <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.resolvedRebuildGroupId) <> "|" <> T.unpack (T.intercalate "," (map Catalog.targetIdText (NE.toList entry.resolvedObservedTargets)))
+renderSupply _ = "missing"
+
+renderDelivery :: [Catalog.ResolvedQuerySupply] -> String
+renderDelivery [entry] = T.unpack (T.intercalate "," (map renderCapability (NE.toList entry.resolvedHandlerCapabilities)))
+renderDelivery _ = "missing"
+
+renderCapability :: Catalog.ProjectionHandlerCapability -> T.Text
+renderCapability Catalog.InlineCapability {} = "inline"
+renderCapability Catalog.SubscriptionCapability {} = "subscription"
+
+renderAsync :: [Catalog.AsyncProjectionRegistration] -> String
+renderAsync [entry] = T.unpack entry.subscriptionName <> "|" <> T.unpack entry.dedupName
+renderAsync _ = "missing"
+
+readModelFactResults :: [(String, Bool)]
+readModelFactResults =
+  [(fact, expected == actual) | (fact, expected, actual) <- readModelFacts]
+
+runReadModelFacts :: IO Bool
+runReadModelFacts = do
+  let failures = [(fact, expected, actual) | (fact, expected, actual) <- readModelFacts, expected /= actual]
+  mapM_ (\(fact, expected, actual) -> putStrLn ("FAIL  " <> fact <> " expected=" <> show expected <> " actual=" <> show actual)) failures
+  pure (null failures)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.
+module Generated.CalendarDays.CalendarLookup.ReadModelTable (calendarLookupQualifiedTable) where
+
+import Data.Text (Text)
+import Keiro.Connection (qualifyTable)
+
+-- The fully-qualified, double-quoted data-table reference.
+calendarLookupQualifiedTable :: Text
+calendarLookupQualifiedTable = qualifyTable "public" "calendar_values"
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs
@@ -0,0 +1,350 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.CalendarDays.CalendarStore.Codec (encodeCalendarStoreEvent, parseCalendarStoreEvent, calendarStoreCodec)
+import Generated.CalendarDays.CalendarStore.Domain
+import Generated.CalendarDays.CalendarStore.Transducer (calendarStoreTransducer)
+import Generated.CalendarDays.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 :: !CalendarStoreVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef CalendarStoreVertex))
+  , target :: !(Maybe CalendarStoreVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty CalendarStoreEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [CalendarStoreEvent]
+      , command :: CalendarStoreCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [CalendarStoreEvent]
+      , observedChunk :: [CalendarStoreEvent]
+      }
+  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 =
+  [ -- CalendarStoreStored x StoreDate: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-81c1074e5cad73be"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = CalendarStoreStored
+      , commandName = "StoreDate"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- CalendarStoreEmpty x StoreDate: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-8a6ce5ac60391741"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = CalendarStoreEmpty
+      , commandName = "StoreDate"
+      , expectedEdge = (Just (K.EdgeRef CalendarStoreEmpty 0))
+      , target = Just CalendarStoreStored
+      , eventKinds = ["DateStored", "DateAudited"]
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: CalendarStore"
+  , "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 -> [CalendarStoreEvent] -> CalendarStoreCommand -> 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 -> (CalendarStoreVertex, K.RegFile CalendarStoreRegs) -> CalendarStoreCommand -> 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 calendarStoreTransducer 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 -> (CalendarStoreVertex, K.RegFile CalendarStoreRegs) -> CalendarStoreCommand -> 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 calendarStoreTransducer 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 calendarStoreTransducer 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 calendarStoreTransducer 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 CalendarStoreRegs CalendarStoreVertex CalendarStoreEvent -> 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 -> [CalendarStoreEvent] -> [CalendarStoreEvent] -> 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 calendarStoreTransducer (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 CalendarStoreVertex] -> 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 -> [CalendarStoreEvent] -> Either BehaviorFailure (K.ReplaySuccess CalendarStoreRegs CalendarStoreVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither calendarStoreTransducer (CalendarStoreEmpty, initialCalendarStoreRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [CalendarStoreEvent] -> Either Text [CalendarStoreEvent]
+decodeEvents = traverse (\event -> parseCalendarStoreEvent (Codec.eventType calendarStoreCodec event) (encodeCalendarStoreEvent event))
+
+commandKind :: CalendarStoreCommand -> Text
+commandKind command = case command of
+  StoreDate _ -> "StoreDate"
+
+eventKind :: CalendarStoreEvent -> Text
+eventKind event = case Codec.eventType calendarStoreCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile CalendarStoreRegs -> K.RegFile CalendarStoreRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current)
+
+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-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs
@@ -0,0 +1,172 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.Codec (
+    calendarStoreCodec,
+    parseCalendarStoreEvent,
+    encodeCalendarStoreEvent,
+    encodeCalendarEnvelopeMapped,
+    decodeCalendarEnvelopeMapped,
+    encodeLocalDayMapped,
+    decodeLocalDayMapped,
+    encodeMaybeLocalDayMapped,
+    decodeMaybeLocalDayMapped,
+) where
+
+import Generated.CalendarDays.CalendarStore.Domain
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Conformance.CalendarDays.Bindings qualified as Bindings
+import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
+import Generated.CalendarDays.Structural.Shape.CalendarEnvelope qualified as ShapeCalendarEnvelope
+import Generated.CalendarDays.Structural.Shape.LocalDay qualified as ShapeLocalDay
+import Generated.CalendarDays.Structural.Shape.MaybeLocalDay qualified as ShapeMaybeLocalDay
+
+
+
+encodeCalendarEnvelopeMapped :: CalendarEnvelope -> Value
+encodeCalendarEnvelopeMapped = encodeCalendarEnvelopeShape . bindingToShape Bindings.calendarEnvelopeBinding
+
+parseCalendarEnvelopeMapped :: Value -> Parser CalendarEnvelope
+parseCalendarEnvelopeMapped value = bindingFromShape Bindings.calendarEnvelopeBinding <$> parseCalendarEnvelopeShape value
+
+decodeCalendarEnvelopeMapped :: Value -> Either Text CalendarEnvelope
+decodeCalendarEnvelopeMapped = mapLeftText . parseEither parseCalendarEnvelopeMapped
+
+encodeCalendarEnvelopeShape :: ShapeCalendarEnvelope.CalendarEnvelopeShape -> Value
+encodeCalendarEnvelopeShape shape =
+  object
+      [ "primary" .= encodeCalendarDay (shape.primary)
+      , "optionalDay" .= maybe Null (\item0 -> encodeCalendarDay (item0)) (shape.optionalDay)
+      , "namedOptional" .= encodeMaybeLocalDayShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeCalendarDay (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeCalendarDay (item0)) (shape.labelled))
+      ]
+
+parseCalendarEnvelopeShape :: Value -> Parser ShapeCalendarEnvelope.CalendarEnvelopeShape
+parseCalendarEnvelopeShape = withObject "CalendarEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "CalendarEnvelope" ["primary", "optionalDay", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeCalendarEnvelope.CalendarEnvelope
+    <$> explicitParseField (parseCalendarDay) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseCalendarDay) other0) objectValue "optionalDay"
+    <*> explicitParseField (parseMaybeLocalDayShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseCalendarDay) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseCalendarDay) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeLocalDayMapped :: LocalDay -> Value
+encodeLocalDayMapped = encodeLocalDayShape . bindingToShape Bindings.localDayBinding
+
+parseLocalDayMapped :: Value -> Parser LocalDay
+parseLocalDayMapped value = bindingFromShape Bindings.localDayBinding <$> parseLocalDayShape value
+
+decodeLocalDayMapped :: Value -> Either Text LocalDay
+decodeLocalDayMapped = mapLeftText . parseEither parseLocalDayMapped
+
+encodeLocalDayShape :: ShapeLocalDay.LocalDayShape -> Value
+encodeLocalDayShape value = encodeCalendarDay (value)
+
+parseLocalDayShape :: Value -> Parser ShapeLocalDay.LocalDayShape
+parseLocalDayShape = parseCalendarDay
+
+encodeMaybeLocalDayMapped :: MaybeLocalDay -> Value
+encodeMaybeLocalDayMapped = encodeMaybeLocalDayShape . bindingToShape Bindings.maybeLocalDayBinding
+
+parseMaybeLocalDayMapped :: Value -> Parser MaybeLocalDay
+parseMaybeLocalDayMapped value = bindingFromShape Bindings.maybeLocalDayBinding <$> parseMaybeLocalDayShape value
+
+decodeMaybeLocalDayMapped :: Value -> Either Text MaybeLocalDay
+decodeMaybeLocalDayMapped = mapLeftText . parseEither parseMaybeLocalDayMapped
+
+encodeMaybeLocalDayShape :: ShapeMaybeLocalDay.MaybeLocalDayShape -> Value
+encodeMaybeLocalDayShape value = maybe Null (\item0 -> encodeCalendarDay (item0)) (value)
+
+parseMaybeLocalDayShape :: Value -> Parser ShapeMaybeLocalDay.MaybeLocalDayShape
+parseMaybeLocalDayShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseCalendarDay) other0
+
+calendarStoreEventTypes :: NonEmpty EventType
+calendarStoreEventTypes = EventType "DateStored" :| [EventType "DateAudited"]
+
+calendarStoreCodec :: Codec CalendarStoreEvent
+calendarStoreCodec =
+  Codec
+    { eventTypes = calendarStoreEventTypes
+    , eventType = \case
+        DateStored{} -> EventType "DateStored"
+        DateAudited{} -> EventType "DateAudited"
+    , schemaVersion = 1
+    , encode = encodeCalendarStoreEvent
+    , decode = parseCalendarStoreEvent
+    , upcasters = []
+    }
+
+encodeCalendarStoreEvent :: CalendarStoreEvent -> Value
+encodeCalendarStoreEvent = \case
+  DateStored payload ->
+    object
+      [ "kind" .= ("DateStored" :: Text)
+      , "day" .= encodeLocalDayMapped payload.day
+      , "optionalDay" .= encodeMaybeLocalDayMapped payload.optionalDay
+      , "envelope" .= encodeCalendarEnvelopeMapped payload.envelope
+      ]
+  DateAudited payload ->
+    object
+      [ "kind" .= ("DateAudited" :: Text)
+      , "day" .= encodeLocalDayMapped payload.day
+      , "optionalDay" .= encodeMaybeLocalDayMapped payload.optionalDay
+      , "envelope" .= encodeCalendarEnvelopeMapped payload.envelope
+      ]
+
+parseCalendarStoreEvent :: EventType -> Value -> Either Text CalendarStoreEvent
+parseCalendarStoreEvent (EventType tag) = mapLeftText . parseEither (withObject "CalendarStoreEvent" go)
+  where
+    go o = do
+      case tag of
+        "DateStored" ->
+          DateStored
+            <$> ( DateStoredData
+                    <$> explicitParseField parseLocalDayMapped o "day"
+                    <*> parseOptionalField (parseMaybeLocalDayMapped Null) parseMaybeLocalDayMapped o "optionalDay"
+                    <*> explicitParseField parseCalendarEnvelopeMapped o "envelope"
+                )
+        "DateAudited" ->
+          DateAudited
+            <$> ( DateAuditedData
+                    <$> explicitParseField parseLocalDayMapped o "day"
+                    <*> parseOptionalField (parseMaybeLocalDayMapped Null) parseMaybeLocalDayMapped o "optionalDay"
+                    <*> explicitParseField parseCalendarEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes calendarStoreEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.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.CalendarDays.Bindings qualified as Bindings
+import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data CalendarStoreVertex = CalendarStoreEmpty | CalendarStoreStored
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+  deriving anyclass (ToJSON, FromJSON)
+instance CanonicalStateShape CalendarStoreVertex
+instance CanonicalTypeName CalendarStoreVertex
+
+data StoreDateData = StoreDateData
+  { day :: !LocalDay
+  , optionalDay :: !MaybeLocalDay
+  , envelope :: !CalendarEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data CalendarStoreCommand = StoreDate !StoreDateData
+  deriving stock (Generic, Eq, Show)
+
+data DateStoredData = DateStoredData
+  { day :: !LocalDay
+  , optionalDay :: !MaybeLocalDay
+  , envelope :: !CalendarEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data DateAuditedData = DateAuditedData
+  { day :: !LocalDay
+  , optionalDay :: !MaybeLocalDay
+  , envelope :: !CalendarEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data CalendarStoreEvent = DateStored !DateStoredData
+  | DateAudited !DateAuditedData
+  deriving stock (Generic, Eq, Show)
+
+type CalendarStoreRegs =
+  '[ '("current", LocalDay)
+   ]
+
+initialCalendarStoreRegs :: RegFile CalendarStoreRegs
+initialCalendarStoreRegs =
+  RCons (Proxy @"current") Bindings.initialLocalDay RNil
+
+$(deriveAggregateCtorsAll ''CalendarStoreCommand ''CalendarStoreRegs)
+
+
+
+$(deriveWireCtorsAll ''CalendarStoreEvent)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs
@@ -0,0 +1,63 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.EventStream
+  ( calendarStoreCategory
+  , calendarStoreCommandCategory
+  , calendarStoreEventStream
+  , calendarStoreEventStreamDef
+  , CalendarStoreEventStream
+  , CalendarStoreEventStreamDef
+  , calendarStoreSnapshotFixture
+  ) where
+
+import Generated.CalendarDays.CalendarStore.Domain
+import Generated.CalendarDays.CalendarStore.Codec (calendarStoreCodec)
+import Generated.CalendarDays.CalendarStore.Transducer (calendarStoreFoldFingerprint, calendarStoreTransducer)
+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.
+calendarStoreCategory :: Stream.StreamCategory CalendarStoreEventStreamDef
+calendarStoreCategory = Stream.categoryUnsafe "calendarStore"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+calendarStoreCommandCategory :: Stream.StreamCategory CalendarStoreCommand
+calendarStoreCommandCategory = Stream.categoryUnsafe "calendarStore"
+
+type CalendarStoreEventStreamDef =
+  EventStream (HsPred CalendarStoreRegs CalendarStoreCommand) CalendarStoreRegs CalendarStoreVertex CalendarStoreCommand CalendarStoreEvent
+
+type CalendarStoreEventStream =
+  ValidatedEventStream (HsPred CalendarStoreRegs CalendarStoreCommand) CalendarStoreRegs CalendarStoreVertex CalendarStoreCommand CalendarStoreEvent
+
+calendarStoreEventStreamDef :: CalendarStoreEventStreamDef
+calendarStoreEventStreamDef =
+  EventStream
+    { transducer = calendarStoreTransducer,
+      initialState = CalendarStoreEmpty,
+      initialRegisters = initialCalendarStoreRegs,
+      eventCodec = calendarStoreCodec,
+      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 calendarStoreFoldFingerprint (defaultStateCodec 1))
+    }
+
+calendarStoreSnapshotFixture :: (Int, Text)
+calendarStoreSnapshotFixture = (1, "calendar-days-v1")
+
+calendarStoreEventStream :: CalendarStoreEventStream
+calendarStoreEventStream =
+  mkEventStreamOrThrow "CalendarStore" calendarStoreEventStreamDef
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.Harness (harnessAssertions) where
+
+import Generated.CalendarDays.CalendarStore.Domain
+import Generated.CalendarDays.CalendarStore.Codec (encodeCalendarStoreEvent, parseCalendarStoreEvent, calendarStoreCodec, encodeCalendarEnvelopeMapped, decodeCalendarEnvelopeMapped)
+import Generated.CalendarDays.CalendarStore.Transducer (calendarStoreTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+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, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.CalendarDays.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 calendarStoreTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: DateStored", roundTrips sampleEventDateStored)
+  , ("golden round-trip: DateAudited", roundTrips sampleEventDateAudited)
+  , ("accepts StoreDate from CalendarStoreEmpty", acceptStoreDate)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayStoreDate
+
+roundTrips :: CalendarStoreEvent -> Bool
+roundTrips e = parseCalendarStoreEvent (eventType calendarStoreCodec e) (encodeCalendarStoreEvent e) == Right e
+
+sampleEventDateStored :: CalendarStoreEvent
+sampleEventDateStored = DateStored (DateStoredData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))
+
+sampleEventDateAudited :: CalendarStoreEvent
+sampleEventDateAudited = DateAudited (DateAuditedData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))
+
+acceptStoreDate :: Bool
+acceptStoreDate =
+  case step calendarStoreTransducer (CalendarStoreEmpty, initialCalendarStoreRegs) (StoreDate (StoreDateData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == CalendarStoreStored
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayStoreDate :: [(String, Bool)]
+forwardReplayStoreDate =
+  case step calendarStoreTransducer (CalendarStoreEmpty, initialCalendarStoreRegs) (StoreDate (StoreDateData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseCalendarStoreEvent (eventType calendarStoreCodec event) (encodeCalendarStoreEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither calendarStoreTransducer (CalendarStoreEmpty, initialCalendarStoreRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              ]
+  where
+    prefix = "forward/replay equality: StoreDate from CalendarStoreEmpty -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ dateStoredDayAssertions
+    , dateStoredOptionalDayAssertions
+    , dateStoredEnvelopeAssertions
+    , dateAuditedDayAssertions
+    , dateAuditedOptionalDayAssertions
+    , dateAuditedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+dateStoredDayAssertions :: [(String, Bool)]
+dateStoredDayAssertions =
+  [ ("mapped codec round-trip: DateStored/day/" <> T.unpack label, roundTrips (DateStored (DateStoredData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.localDayFixtures)
+  ]
+
+dateStoredOptionalDayAssertions :: [(String, Bool)]
+dateStoredOptionalDayAssertions =
+  [ ("mapped codec round-trip: DateStored/optionalDay/" <> T.unpack label, roundTrips (DateStored (DateStoredData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeLocalDayFixtures)
+  ]
+
+dateStoredEnvelopeAssertions :: [(String, Bool)]
+dateStoredEnvelopeAssertions =
+  [ ("mapped codec round-trip: DateStored/envelope/" <> T.unpack label, roundTrips (DateStored (DateStoredData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.calendarEnvelopeFixtures)
+  ]
+
+dateAuditedDayAssertions :: [(String, Bool)]
+dateAuditedDayAssertions =
+  [ ("mapped codec round-trip: DateAudited/day/" <> T.unpack label, roundTrips (DateAudited (DateAuditedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.localDayFixtures)
+  ]
+
+dateAuditedOptionalDayAssertions :: [(String, Bool)]
+dateAuditedOptionalDayAssertions =
+  [ ("mapped codec round-trip: DateAudited/optionalDay/" <> T.unpack label, roundTrips (DateAudited (DateAuditedData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeLocalDayFixtures)
+  ]
+
+dateAuditedEnvelopeAssertions :: [(String, Bool)]
+dateAuditedEnvelopeAssertions =
+  [ ("mapped codec round-trip: DateAudited/envelope/" <> T.unpack label, roundTrips (DateAudited (DateAuditedData (snd (NonEmpty.head (fixtureCases Bindings.localDayFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeLocalDayFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.calendarEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.calendar-days.CalendarEnvelope.v1/optionalDay", case decodeCalendarEnvelopeMapped (deleteObjectField "optionalDay" (encodeCalendarEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalDay" (encodeCalendarEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.calendar-days.CalendarEnvelope.v1/optionalDay", isRight (decodeCalendarEnvelopeMapped (insertObjectField "optionalDay" Aeson.Null (encodeCalendarEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.calendarEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.calendar-days.CalendarEnvelope.v1", all (\(_, value) -> isLeft (decodeCalendarEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeCalendarEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.calendarEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
+module Generated.CalendarDays.CalendarStore.Transducer
+  ( calendarStoreTransducer
+  , calendarStoreFoldFingerprint
+  , BehaviorOwnership (..)
+  , calendarStorePredicateVerifications
+  ) where
+
+import Generated.CalendarDays.CalendarStore.Domain
+import Data.Text (Text)
+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 ((=:))
+
+calendarStoreTransducer
+  :: SymTransducer
+       (HsPred CalendarStoreRegs CalendarStoreCommand)
+       CalendarStoreRegs
+       CalendarStoreVertex
+       CalendarStoreCommand
+       CalendarStoreEvent
+calendarStoreTransducer =
+  B.buildTransducer CalendarStoreEmpty initialCalendarStoreRegs isTerminal do
+    B.from CalendarStoreEmpty do
+      B.onCmd inCtorStoreDate $ \d -> B.do
+        B.slot @"current" =: d.day
+        B.emit wireDateStored (DateStoredTermFields
+          { day = d.day
+          , optionalDay = d.optionalDay
+          , envelope = d.envelope
+          })
+        B.emit wireDateAudited (DateAuditedTermFields
+          { day = d.day
+          , optionalDay = d.optionalDay
+          , envelope = d.envelope
+          })
+        B.goto CalendarStoreStored
+ where
+  isTerminal = \case
+    CalendarStoreStored -> True
+    _ -> False
+
+calendarStoreFoldFingerprint :: Text
+calendarStoreFoldFingerprint = "0e4a982b146fd9211b6f90608e193156"
+
+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.
+calendarStorePredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+calendarStorePredicateVerifications = sequence
+  [ verifyTransition "transition1EmptyStoreDate" GeneratedOwned CalendarStoreEmpty 0
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut calendarStoreTransducer 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-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs b/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs
@@ -0,0 +1,80 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog calendar-days; do not edit.
+{-# LANGUAGE OverloadedStrings #-}
+module Generated.CalendarDays.ProjectionCatalog
+  ( projectionCatalog
+  , validatedProjectionCatalog
+  , projectionCatalogInventory
+  , projectionCatalogRegistrations
+  , projectionCatalogAsyncRegistrations
+  , projectionCatalogQuerySupplies
+  , registerProjectionCatalog
+  , calendarWriterProjectionSet
+  , calendarRebuildRebuildGroupId
+  , startCalendarRebuildRebuild
+  ) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Effectful (Eff, IOE, (:>))
+import Keiro.Projection (AsyncProjection (..))
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel.Rebuild qualified as Rebuild
+import Kiroku.Store.Effect (Store)
+import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
+import CalendarDays.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
+import Generated.CalendarDays.CalendarLookup.ReadModel qualified as RMCalendarLookup
+
+must :: Show error => Either error value -> value
+must = either (error . show) id
+
+calendarWriterProjectionSet :: Catalog.ProjectionSet Holes.CalendarWriterEvent
+calendarWriterProjectionSet =
+  Catalog.ProjectionSet
+    (must (Catalog.mkSourceId "all"))
+    (Catalog.ProjectionDefinition
+      (must (Catalog.mkProjectionId "calendar_writer"))
+      (must (Catalog.mkRebuildGroupId "calendar_rebuild"))
+      ((must (Catalog.mkTargetId "calendar_table")) :| [])
+      (Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeCalendarWriterReplay Holes.applyCalendarWriterReplay))
+      (Catalog.AsyncHandler (AsyncProjection "calendar-writer-v1" "calendar-days-calendar-lookup" "calendar-writer" Holes.applyCalendarWriterLive Holes.calendarWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "calendar-writer")) (must (Catalog.mkDedupKeyId "calendar-writer-v1")) (must (Catalog.mkClaimSite "projection-owner calendar_writer async-handler")) :| [])
+      (must (Catalog.mkClaimSite "projection-owner calendar_writer"))
+      :| [])
+    (must (Catalog.mkClaimSite "projection-owner calendar_writer source"))
+
+projectionCatalog :: Catalog.ProjectionCatalog
+projectionCatalog =
+  Catalog.ProjectionCatalog
+    [Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
+    [Catalog.TargetDeclaration (must (Catalog.mkTargetId "calendar_table")) (Catalog.QualifiedTable "public" "calendar_values") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target calendar_table"))]
+    [Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "calendar_rebuild")) [(must (Catalog.mkTargetId "calendar_table"))] [] (must (Catalog.mkClaimSite "rebuild-group calendar_rebuild"))]
+    []
+    []
+    [Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "calendar-writer")) "calendar-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner calendar_writer subscription"))]
+    [Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "calendar-writer-v1")) "calendar-writer-v1" (must (Catalog.mkClaimSite "projection-owner calendar_writer dedup"))]
+    [Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "calendar_lookup")) RMCalendarLookup.calendarLookupReadModel (must (Catalog.mkRebuildGroupId "calendar_rebuild")) [(must (Catalog.mkTargetId "calendar_table"))] (must (Catalog.mkClaimSite "readmodel calendar_lookup")))]
+    [Catalog.SomeProjectionSet calendarWriterProjectionSet]
+
+validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
+validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
+  Catalog.Success catalog -> catalog
+  Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
+
+projectionCatalogInventory :: Catalog.CatalogInventory
+projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
+
+projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
+projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
+
+projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
+projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
+
+projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
+projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
+
+registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
+registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
+
+calendarRebuildRebuildGroupId :: Catalog.RebuildGroupId
+calendarRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "calendar_rebuild"))
+
+startCalendarRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
+startCalendarRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog calendarRebuildRebuildGroupId
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs b/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.CalendarDays.ReplayAudit (auditTargets) where
+
+import Generated.CalendarDays.CalendarStore.EventStream qualified as CalendarStore
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = CalendarStore.calendarStoreEventStream
+        , category = Stream.categoryText CalendarStore.calendarStoreCategory
+        , mkStream = streamInCategory (Stream.categoryText CalendarStore.calendarStoreCategory)
+        }
+  ]
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/CodecCompare/MaybeLocalDay.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/CodecCompare/MaybeLocalDay.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/CodecCompare/MaybeLocalDay.hs
@@ -0,0 +1,77 @@
+
+-- @generated by keiro-dsl codec comparison; non-production migration evidence; do not edit.
+-- This module compares historical and generated codecs in consumer-owned tests only.
+-- It is never a runtime fallback and never changes the generated codec's authority.
+module Generated.CalendarDays.Structural.CodecCompare.MaybeLocalDay (compareWithHistorical) where
+
+import Control.Monad (filterM)
+import Data.Aeson (Value)
+import Data.Aeson qualified as Aeson
+import Data.List (sort)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text (Text)
+import Data.Text qualified
+import Generated.CalendarDays.CalendarStore.Codec qualified as GeneratedCodec
+import Keiro.Codec.Structural (FixtureCases (..))
+import Keiro.Dsl.CodecCompare
+import Keiro.Dsl.TypeGraph (BindingVersion (..), CanonicalTypeId (..), QualifiedValueName (..))
+import System.Directory (doesFileExist, listDirectory)
+import System.FilePath (takeExtension, (</>))
+import Conformance.CalendarDays.Bindings qualified as Bindings
+import Conformance.CalendarDays.Domain (MaybeLocalDay)
+
+compareWithHistorical :: HistoricalCodec MaybeLocalDay -> FilePath -> IO CompareReport
+compareWithHistorical historicalCodec goldenDirectory = do
+  names <- sort . filter ((== ".json") . takeExtension) <$> listDirectory goldenDirectory
+  files <- filterM doesFileExist [goldenDirectory </> name | name <- names]
+  loaded <- traverse (loadGolden historicalCodec) files
+  let inputIssues = [issue | Left issue <- loaded]
+      entries = [entry | Right entry <- loaded]
+      typedCases = NonEmpty.toList (fixtureCases Bindings.maybeLocalDayFixtures)
+      encodeObservations =
+        [ EncodeObservation label (historicalCodec.encode value) (GeneratedCodec.encodeMaybeLocalDayMapped value)
+        | (label, value) <- typedCases
+        ]
+      decodeObservations = [observation | (observation, _) <- entries]
+      typedObserved =
+        concat
+          [ observedBranchesFor FromBinding branchSchema (GeneratedCodec.encodeMaybeLocalDayMapped value)
+          | (_, value) <- typedCases
+          ]
+      historicalObserved =
+        concat [observedBranchesFor HistoricalGolden branchSchema value | (_, values) <- entries, value <- values]
+      declared = declaredBranchesFor FromBinding branchSchema <> declaredBranchesFor HistoricalGolden branchSchema
+      provenance =
+        CompareProvenance
+          { historicalCodecIdentity = historicalCodec.identity
+          , historicalCodecVersion = historicalCodec.version
+          , canonicalType = CanonicalTypeId "conformance.calendar-days.MaybeLocalDay.v1"
+          , bindingSymbol = QualifiedValueName "Conformance.CalendarDays.Bindings.maybeLocalDayBinding"
+          , bindingVersion = BindingVersion "1"
+          , wireFingerprint = "c28177c9398266fc"
+          }
+  pure (compareReport provenance inputIssues (encodeObservations <> decodeObservations) declared (typedObserved <> historicalObserved))
+
+loadGolden :: HistoricalCodec MaybeLocalDay -> FilePath -> IO (Either CompareInputIssue (CompareObservation, [Value]))
+loadGolden historicalCodec path = do
+  decoded <- Aeson.eitherDecodeFileStrict path
+  pure $ case decoded of
+    Left reason -> Left (HistoricalGoldenUnreadable path (fromString reason))
+    Right inputValue ->
+      let historicalDecoded = historicalCodec.decode inputValue
+          historicalOutcome = normalizeDecode historicalDecoded
+          generatedOutcome = normalizeDecode (GeneratedCodec.decodeMaybeLocalDayMapped inputValue)
+          observation = DecodeObservation path inputValue historicalOutcome generatedOutcome
+          coveredValues = case historicalDecoded of
+            Right value -> [inputValue, GeneratedCodec.encodeMaybeLocalDayMapped value]
+            Left _ -> []
+       in Right (observation, coveredValues)
+
+normalizeDecode :: Either Text MaybeLocalDay -> DecodeOutcome
+normalizeDecode = either DecodeFailed (DecodedShape . GeneratedCodec.encodeMaybeLocalDayMapped)
+
+fromString :: String -> Text
+fromString = Data.Text.pack
+
+branchSchema :: BranchSchema
+branchSchema = BranchOptional (BranchScalar)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
@@ -0,0 +1,17 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+import Data.Time.Calendar (Day)
+import GHC.Generics (Generic)
+import Generated.CalendarDays.Structural.Shape.MaybeLocalDay qualified as MaybeLocalDay
+
+data CalendarEnvelopeShape = CalendarEnvelope
+  { primary :: !Day
+  , optionalDay :: !(Maybe Day)
+  , namedOptional :: !MaybeLocalDay.MaybeLocalDayShape
+  , sequence :: ![Day]
+  , labelled :: !(Map Text Day)
+  }
+  deriving stock (Eq, Generic, Show)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type LocalDayShape = 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
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type MaybeLocalDayShape = (Maybe Day)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs b/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs
@@ -0,0 +1,84 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context calendar-days structural conformance; do not edit.
+module Generated.CalendarDays.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Generated.CalendarDays.Structural.Shape.CalendarEnvelope (CalendarEnvelopeShape(optionalDay))
+import Conformance.CalendarDays.Bindings qualified as Bindings
+import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ calendarEnvelopeBindingAssertions
+    , localDayBindingAssertions
+    , maybeLocalDayBindingAssertions
+    , [("fixture coverage: conformance.calendar-days.CalendarEnvelope.v1", coverageCalendarEnvelope)]
+    , [("fixture coverage: conformance.calendar-days.LocalDay.v1", coverageLocalDay)]
+    , [("fixture coverage: conformance.calendar-days.MaybeLocalDay.v1", coverageMaybeLocalDay)]
+    ]
+
+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)
+
+calendarEnvelopeBindingAssertions :: [(String, Bool)]
+calendarEnvelopeBindingAssertions =
+  ("fixture labels: conformance.calendar-days.CalendarEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.calendar-days.CalendarEnvelope.v1", canonicalTypeName (Proxy @CalendarEnvelope) == "conformance.calendar-days.CalendarEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.calendar-days.CalendarEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.calendarEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.calendar-days.CalendarEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.calendarEnvelopeBinding (bindingToShape Bindings.calendarEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.calendarEnvelopeFixtures
+
+localDayBindingAssertions :: [(String, Bool)]
+localDayBindingAssertions =
+  ("fixture labels: conformance.calendar-days.LocalDay.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.calendar-days.LocalDay.v1", canonicalTypeName (Proxy @LocalDay) == "conformance.calendar-days.LocalDay.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.calendar-days.LocalDay.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.localDayBinding value)
+      , ("binding shape round-trip: conformance.calendar-days.LocalDay.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.localDayBinding (bindingToShape Bindings.localDayBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.localDayFixtures
+
+maybeLocalDayBindingAssertions :: [(String, Bool)]
+maybeLocalDayBindingAssertions =
+  ("fixture labels: conformance.calendar-days.MaybeLocalDay.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.calendar-days.MaybeLocalDay.v1", canonicalTypeName (Proxy @MaybeLocalDay) == "conformance.calendar-days.MaybeLocalDay.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.calendar-days.MaybeLocalDay.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeLocalDayBinding value)
+      , ("binding shape round-trip: conformance.calendar-days.MaybeLocalDay.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeLocalDayBinding (bindingToShape Bindings.maybeLocalDayBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeLocalDayFixtures
+
+coverageCalendarEnvelope :: Bool
+coverageCalendarEnvelope = any (isNothing . (.optionalDay)) shapes && any (isJust . (.optionalDay)) shapes
+  where
+    shapes = map (bindingToShape Bindings.calendarEnvelopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.calendarEnvelopeFixtures))
+
+coverageLocalDay :: Bool
+coverageLocalDay = True
+
+coverageMaybeLocalDay :: Bool
+coverageMaybeLocalDay = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeLocalDayBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeLocalDayFixtures))
diff --git a/test/conformance-calendar-days/Main.hs b/test/conformance-calendar-days/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/Main.hs
@@ -0,0 +1,171 @@
+module Main (main) where
+
+import Conformance.CalendarDays.Bindings (localDayFixtures)
+import Conformance.CalendarDays.Domain
+import Conformance.CalendarDays.Historical (historicalLocalDayCodec, historicalMaybeLocalDayCodec)
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Either (isLeft)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Time.Calendar (fromGregorian)
+import Generated.CalendarDays.CalendarJobs.Queue (CalendarJob (..), encodeCalendarJob, parseCalendarJob)
+import Generated.CalendarDays.CalendarLookup.QueryContract (CalendarLookupQueryInput, CalendarLookupQueryResult)
+import Generated.CalendarDays.CalendarStore.Codec
+import Generated.CalendarDays.CalendarStore.Domain
+import Generated.CalendarDays.CalendarStore.Harness (harnessAssertions)
+import Generated.CalendarDays.Structural.CodecCompare.MaybeLocalDay (compareWithHistorical)
+import Generated.CalendarDays.StructuralConformance (structuralConformanceAssertions)
+import Keiro.Codec (eventType)
+import Keiro.Codec.Structural qualified
+import Keiro.Dsl.CodecCompare (CompareObservation (..), DecodeOutcome (..), FixtureVerdict (..), HistoricalCodec (..), classifyObservation, reportSucceeded)
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  comparison <-
+    compareWithHistorical
+      historicalMaybeLocalDayCodec
+      "test/conformance-calendar-days/fixtures/codec-compare"
+  let assertions =
+        [("structural/" <> label, passed) | (label, passed) <- structuralConformanceAssertions]
+          <> harnessAssertions
+          <> [ ("bare Day uses canonical calendar bytes", localDayWire),
+               ("historical Aeson LocalDay writer matches generated bytes", historicalLocalDayParity),
+               ("old Aeson readers reject new extended-year writes and require producer-last rollout", oldReaderNewWriterLimitation),
+               ("invalid Gregorian dates are rejected", invalidDatesRejected),
+               ("historical non-canonical spellings normalize", historicalSpellingsNormalize),
+               ("a narrowed date reader is compatibility work", narrowedReaderRefused),
+               ("a date-to-midnight conversion is compatibility work", midnightConversionRefused),
+               ("root optional date fields treat omission and null alike", rootOptionalAbsenceEquivalence),
+               ("non-optional date fields still reject omission", nonOptionalRootStrict),
+               ("nested list and map dates round-trip", nestedRoundTrip),
+               ("queue payloads preserve calendar-day mappings", queueRoundTrip),
+               ("query contracts preserve calendar-day domain types", queryAgreement),
+               ("historical MaybeLocalDay codec comparison succeeds", reportSucceeded comparison)
+             ]
+  forM_ assertions $ \(label, passed) ->
+    putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+localDayWire :: Bool
+localDayWire =
+  encodeLocalDayMapped value == String "2000-02-29"
+    && decodeLocalDayMapped (String "2000-02-29") == Right value
+    && encodeLocalDayMapped (LocalDay (fromGregorian 0 1 1)) == String "0000-01-01"
+    && encodeLocalDayMapped (LocalDay (fromGregorian (-1) 1 1)) == String "-0001-01-01"
+    && encodeLocalDayMapped (LocalDay (fromGregorian 12345678901234567890 6 30)) == String "12345678901234567890-06-30"
+  where
+    value = LocalDay (fromGregorian 2000 2 29)
+
+historicalLocalDayParity :: Bool
+historicalLocalDayParity =
+  all
+    (\(label, value) -> classifyObservation (EncodeObservation label (historicalLocalDayCodec.encode value) (encodeLocalDayMapped value)) == Right JsonParity)
+    (NonEmpty.toList (Keiro.Codec.Structural.fixtureCases localDayFixtures))
+
+oldReaderNewWriterLimitation :: Bool
+oldReaderNewWriterLimitation =
+  isLeft
+    ( historicalLocalDayCodec.decode
+        (encodeLocalDayMapped (LocalDay (fromGregorian 12345678901234567890 6 30)))
+    )
+
+invalidDatesRejected :: Bool
+invalidDatesRejected =
+  all (isLeft . decodeLocalDayMapped . String) ["1900-02-29", "2026-02-30", "2026-13-01", "2026-01-00"]
+
+historicalSpellingsNormalize :: Bool
+historicalSpellingsNormalize =
+  decodeLocalDayMapped (String "+002000-02-29") == Right value
+    && encodeLocalDayMapped value == String "2000-02-29"
+    && decodeLocalDayMapped (String "00000000-01-01") == Right (LocalDay (fromGregorian 0 1 1))
+  where
+    value = LocalDay (fromGregorian 2000 2 29)
+
+narrowedReaderRefused :: Bool
+narrowedReaderRefused =
+  case
+      classifyObservation
+        ( DecodeObservation
+            "historical-plus-year.json"
+            (String "+002000-02-29")
+            (DecodedShape (String "2000-02-29"))
+            (DecodeFailed "candidate reader rejected the historical spelling")
+        )
+    of
+    Right (RequiresVersionWork _) -> True
+    _ -> False
+
+midnightConversionRefused :: Bool
+midnightConversionRefused =
+  case classifyObservation (EncodeObservation "midnight-coercion" (String "2000-02-29") (String "2000-02-29T00:00:00Z")) of
+    Right (RequiresVersionWork _) -> True
+    _ -> False
+
+-- | Plan 295 found both spellings of absence in retained history -- omitted keys
+-- and explicit nulls -- which historical Aeson decoding had always read as
+-- 'Nothing'. A root 'Optional' mapped date field must therefore accept an
+-- omitted key and decode it exactly as an explicit null.
+rootOptionalAbsenceEquivalence :: Bool
+rootOptionalAbsenceEquivalence =
+  parseCalendarStoreEvent kind (deleteObjectField "optionalDay" encoded) == Right event
+    && parseCalendarStoreEvent kind (insertObjectField "optionalDay" Null encoded) == Right event
+  where
+    event = DateStored (DateStoredData day (MaybeLocalDay Nothing) envelope)
+    kind = eventType calendarStoreCodec event
+    encoded = encodeCalendarStoreEvent event
+    day = LocalDay (fromGregorian 2000 2 29)
+    envelope = sampleEnvelope
+
+-- | The equivalence above is scoped to root 'Optional' mapped fields. A
+-- non-optional mapped root carries no absent spelling, so omitting it stays a
+-- decode failure rather than defaulting.
+nonOptionalRootStrict :: Bool
+nonOptionalRootStrict =
+  isLeft (parseCalendarStoreEvent kind (deleteObjectField "day" encoded))
+    && isLeft (parseCalendarStoreEvent kind (deleteObjectField "envelope" encoded))
+  where
+    event = DateStored (DateStoredData day (MaybeLocalDay Nothing) envelope)
+    kind = eventType calendarStoreCodec event
+    encoded = encodeCalendarStoreEvent event
+    day = LocalDay (fromGregorian 2000 2 29)
+    envelope = sampleEnvelope
+
+nestedRoundTrip :: Bool
+nestedRoundTrip = decodeCalendarEnvelopeMapped (encodeCalendarEnvelopeMapped sampleEnvelope) == Right sampleEnvelope
+
+queueRoundTrip :: Bool
+queueRoundTrip = parseCalendarJob (encodeCalendarJob payload) == Right payload
+  where
+    payload = CalendarJob (LocalDay (fromGregorian 2000 2 29)) (MaybeLocalDay Nothing) sampleEnvelope
+
+queryAgreement :: Bool
+queryAgreement =
+  queryInputIdentity (MaybeLocalDay (Just (fromGregorian 2000 2 29))) == MaybeLocalDay (Just (fromGregorian 2000 2 29))
+    && queryResultIdentity sampleEnvelope == sampleEnvelope
+
+queryInputIdentity :: CalendarLookupQueryInput -> MaybeLocalDay
+queryInputIdentity = id
+
+queryResultIdentity :: CalendarLookupQueryResult -> CalendarEnvelope
+queryResultIdentity = id
+
+sampleEnvelope :: CalendarEnvelope
+sampleEnvelope =
+  CalendarEnvelope
+    (fromGregorian 2000 2 29)
+    Nothing
+    (MaybeLocalDay (Just (fromGregorian 0 1 1)))
+    [fromGregorian 1900 2 28, fromGregorian 1900 3 1]
+    (Map.fromList [("extended", fromGregorian 12345678901234567890 6 30)])
+
+deleteObjectField :: Key.Key -> Value -> Value
+deleteObjectField key (Object value) = Object (KeyMap.delete key value)
+deleteObjectField _ value = value
+
+insertObjectField :: Key.Key -> Value -> Value -> Value
+insertObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+insertObjectField _ _ value = value
diff --git a/test/conformance-calendar-days/README.md b/test/conformance-calendar-days/README.md
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/README.md
@@ -0,0 +1,35 @@
+# Calendar-day conformance
+
+This is the compiled public-authoring example for checked calendar-day mappings.
+It uses `Data.Time.Calendar.Day` directly in a named bare mapping and inside a
+structural record, `Optional`, `List`, and text-keyed `Map`; the same mapped
+domain values cross aggregate command/event/register, workqueue, read-model
+query, snapshot, event serialization, and strict multi-event replay surfaces.
+
+The smallest consumer contract is a total `StructuralBinding` between each
+domain type and its generated shape. Calendar validation and JSON ownership stay
+in `Keiro.Codec.CalendarDay`; bindings do not convert through `Text`, `UTCTime`,
+locale, timezone, or partial smart constructors.
+
+| Surface | Calendar-day status |
+| --- | --- |
+| Bare and nested structural mappings | Supported and compiled here |
+| Aggregate commands, private events, and registers | Supported through named mappings and strict replay evidence here |
+| Workqueue payloads | Supported through named mappings and round-trip evidence here |
+| Read-model query input/result types | Supported through named mappings and compiled aliases here |
+| Cross-file workspace ownership | Supported by the common mapped-type ownership path; the workspace structural suite proves that path |
+| Public contract fields | Application-owned codec boundary; no structural mapping syntax is implied |
+| Process/workflow journals and effects | Application-owned codecs; sharing `Day` does not transfer journal ownership |
+| Direct aggregate `Day` fields | Unsupported with a located diagnostic; use a named structural mapping |
+| Nominal `Day` wrappers | Unsupported in this release |
+| Date guards, ordering, and arithmetic | Unsupported in this release |
+
+The JSON files under `fixtures/codec-compare` are repository fixtures modeled on
+the consumer's Aeson 2.2 `Day` codec, not evidence from retained consumer
+history. Real-history adoption and journal audit remain outside this suite.
+
+Aeson 2.2's historical reader rejects years wider than fifteen digits while the
+new full-carrier writer can emit them. The suite retains that failed
+old-reader/new-writer direction explicitly. Rollout must therefore keep
+extended-year writes disabled until old readers are retired (producer last);
+historical-read success does not imply simultaneous-version write compatibility.
diff --git a/test/conformance-calendar-days/fixtures/codec-compare/historical-plus-year.json b/test/conformance-calendar-days/fixtures/codec-compare/historical-plus-year.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/fixtures/codec-compare/historical-plus-year.json
@@ -0,0 +1,1 @@
+"+002000-02-29"
diff --git a/test/conformance-calendar-days/fixtures/codec-compare/leap-day.json b/test/conformance-calendar-days/fixtures/codec-compare/leap-day.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/fixtures/codec-compare/leap-day.json
@@ -0,0 +1,1 @@
+"2000-02-29"
diff --git a/test/conformance-calendar-days/fixtures/codec-compare/nothing.json b/test/conformance-calendar-days/fixtures/codec-compare/nothing.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/fixtures/codec-compare/nothing.json
@@ -0,0 +1,1 @@
+null
diff --git a/test/conformance-calendar-days/keiro-dsl-cabal-fragment.context.calendar-days.txt b/test/conformance-calendar-days/keiro-dsl-cabal-fragment.context.calendar-days.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/keiro-dsl-cabal-fragment.context.calendar-days.txt
@@ -0,0 +1,60 @@
+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/calendar-days.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:
+    CalendarDays.CalendarLookup.ReadModelHoles
+    CalendarDays.CalendarStore.BehaviorHoles
+    CalendarDays.ProjectionCatalog.ProjectionCatalogHoles
+    Conformance.CalendarDays.Bindings
+    Generated.CalendarDays.BehaviorSourceMap
+    Generated.CalendarDays.CalendarJobs.Queue
+    Generated.CalendarDays.CalendarJobs.QueueCodec
+    Generated.CalendarDays.CalendarJobs.QueuePolicy
+    Generated.CalendarDays.CalendarLookup.QueryContract
+    Generated.CalendarDays.CalendarLookup.ReadModel
+    Generated.CalendarDays.CalendarLookup.ReadModelHarness
+    Generated.CalendarDays.CalendarLookup.ReadModelTable
+    Generated.CalendarDays.CalendarStore.BehaviorContract
+    Generated.CalendarDays.CalendarStore.Codec
+    Generated.CalendarDays.CalendarStore.Domain
+    Generated.CalendarDays.CalendarStore.EventStream
+    Generated.CalendarDays.CalendarStore.Harness
+    Generated.CalendarDays.CalendarStore.Projection
+    Generated.CalendarDays.CalendarStore.Transducer
+    Generated.CalendarDays.ProjectionCatalog
+    Generated.CalendarDays.ReplayAudit
+    Generated.CalendarDays.Structural.Shape.CalendarEnvelope
+    Generated.CalendarDays.Structural.Shape.LocalDay
+    Generated.CalendarDays.Structural.Shape.MaybeLocalDay
+    Generated.CalendarDays.StructuralConformance
+
+build-depends:
+    , aeson
+    , base
+    , containers
+    , effectful-core
+    , hasql-transaction
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , kiroku-store
+    , text
+    , time
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.CalendarDays.Bindings
+    Conformance.CalendarDays.Domain
diff --git a/test/conformance-calendar-days/keiro-dsl-ledger.context.calendar-days.txt b/test/conformance-calendar-days/keiro-dsl-ledger.context.calendar-days.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-calendar-days/keiro-dsl-ledger.context.calendar-days.txt
@@ -0,0 +1,85 @@
+keiro-dsl scaffold record v1
+spec: keiro-dsl/test/fixtures/calendar-days.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 calendar-days structural conformance","path":"Generated/CalendarDays/StructuralConformance.hs"}
+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context calendar-days behavior source map","path":"Generated/CalendarDays/BehaviorSourceMap.hs"}
+module-role {"family":"CalendarEnvelope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural CalendarEnvelope (line 23)","path":"Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs"}
+module-role {"family":"LocalDay","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural LocalDay (line 4)","path":"Generated/CalendarDays/Structural/Shape/LocalDay.hs"}
+module-role {"family":"MaybeLocalDay","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural MaybeLocalDay (line 14)","path":"Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs"}
+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.CalendarDays.Bindings","path":"Conformance/CalendarDays/Bindings.hs"}
+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context calendar-days replay-audit assembly","path":"Generated/CalendarDays/ReplayAudit.hs"}
+module-role {"family":"ProjectionCatalog","kind":"generated","ownerKind":"projection-catalog","ownerName":"projection-catalog calendar-days","path":"Generated/CalendarDays/ProjectionCatalog.hs"}
+module-role {"family":"ProjectionCatalogHoles","kind":"hole","ownerKind":"projection-catalog","ownerName":"projection-catalog calendar-days","path":"CalendarDays/ProjectionCatalog/ProjectionCatalogHoles.hs"}
+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/Domain.hs"}
+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/Codec.hs"}
+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/Transducer.hs"}
+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/BehaviorContract.hs"}
+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses CalendarStore (line 38)","path":"CalendarDays/CalendarStore/BehaviorHoles.hs"}
+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/EventStream.hs"}
+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/Projection.hs"}
+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate CalendarStore (line 38)","path":"Generated/CalendarDays/CalendarStore/Harness.hs"}
+module-role {"family":"Queue","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue calendar_jobs (line 57)","path":"Generated/CalendarDays/CalendarJobs/Queue.hs"}
+module-role {"family":"QueuePolicy","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue calendar_jobs (line 57)","path":"Generated/CalendarDays/CalendarJobs/QueuePolicy.hs"}
+module-role {"family":"QueueCodec","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue calendar_jobs (line 57)","path":"Generated/CalendarDays/CalendarJobs/QueueCodec.hs"}
+module-role {"family":"ReadModelTable","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel calendar_lookup (line 99)","path":"Generated/CalendarDays/CalendarLookup/ReadModelTable.hs"}
+module-role {"family":"QueryContract","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel calendar_lookup (line 99)","path":"Generated/CalendarDays/CalendarLookup/QueryContract.hs"}
+module-role {"family":"ReadModel","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel calendar_lookup (line 99)","path":"Generated/CalendarDays/CalendarLookup/ReadModel.hs"}
+module-role {"family":"ReadModelHoles","kind":"hole","ownerKind":"readmodel","ownerName":"readmodel calendar_lookup (line 99)","path":"CalendarDays/CalendarLookup/ReadModelHoles.hs"}
+module-role {"family":"ReadModelHarness","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel calendar_lookup (line 99)","path":"Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs"}
+generated Generated/CalendarDays/StructuralConformance.hs
+generated Generated/CalendarDays/BehaviorSourceMap.hs
+generated Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
+generated Generated/CalendarDays/Structural/Shape/LocalDay.hs
+generated Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs
+hole Conformance/CalendarDays/Bindings.hs
+generated Generated/CalendarDays/ReplayAudit.hs
+generated Generated/CalendarDays/ProjectionCatalog.hs
+hole CalendarDays/ProjectionCatalog/ProjectionCatalogHoles.hs
+generated Generated/CalendarDays/CalendarStore/Domain.hs
+generated Generated/CalendarDays/CalendarStore/Codec.hs
+generated Generated/CalendarDays/CalendarStore/Transducer.hs
+generated Generated/CalendarDays/CalendarStore/BehaviorContract.hs
+hole CalendarDays/CalendarStore/BehaviorHoles.hs
+generated Generated/CalendarDays/CalendarStore/EventStream.hs
+generated Generated/CalendarDays/CalendarStore/Projection.hs
+generated Generated/CalendarDays/CalendarStore/Harness.hs
+generated Generated/CalendarDays/CalendarJobs/Queue.hs
+generated Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
+generated Generated/CalendarDays/CalendarJobs/QueueCodec.hs
+generated Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
+generated Generated/CalendarDays/CalendarLookup/QueryContract.hs
+generated Generated/CalendarDays/CalendarLookup/ReadModel.hs
+hole CalendarDays/CalendarLookup/ReadModelHoles.hs
+generated Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
+mapping {"bindingSymbol":"Conformance.CalendarDays.Bindings.calendarEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.calendar-days.CalendarEnvelope.v1","mode":"structural","module":"Conformance.CalendarDays.Domain","package":"keiro-dsl","schema":1,"specName":"CalendarEnvelope","type":"CalendarEnvelope"}
+mapping {"bindingSymbol":"Conformance.CalendarDays.Bindings.localDayBinding","bindingVersion":"1","canonicalType":"conformance.calendar-days.LocalDay.v1","mode":"structural","module":"Conformance.CalendarDays.Domain","package":"keiro-dsl","schema":1,"specName":"LocalDay","type":"LocalDay"}
+mapping {"bindingSymbol":"Conformance.CalendarDays.Bindings.maybeLocalDayBinding","bindingVersion":"1","canonicalType":"conformance.calendar-days.MaybeLocalDay.v1","mode":"structural","module":"Conformance.CalendarDays.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeLocalDay","type":"MaybeLocalDay"}
+binding {"kind":"binding","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":"labelled","schema":1,"signature":"calendarEnvelopeBinding.labelled :: Map Text (Day)","symbol":"calendarEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":"namedOptional","schema":1,"signature":"calendarEnvelopeBinding.namedOptional :: MaybeLocalDay","symbol":"calendarEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":"optionalDay","schema":1,"signature":"calendarEnvelopeBinding.optionalDay :: Maybe (Day)","symbol":"calendarEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":"primary","schema":1,"signature":"calendarEnvelopeBinding.primary :: Day","symbol":"calendarEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":"sequence","schema":1,"signature":"calendarEnvelopeBinding.sequence :: [Day]","symbol":"calendarEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"CalendarEnvelope","module":"Conformance.CalendarDays.Bindings","path":null,"schema":1,"signature":"calendarEnvelopeFixtures :: FixtureCases Conformance.CalendarDays.Domain.CalendarEnvelope","symbol":"calendarEnvelopeFixtures"}
+binding {"kind":"binding","mappedName":"LocalDay","module":"Conformance.CalendarDays.Bindings","path":"value","schema":1,"signature":"localDayBinding.value :: Day","symbol":"localDayBinding"}
+binding {"kind":"fixtures","mappedName":"LocalDay","module":"Conformance.CalendarDays.Bindings","path":null,"schema":1,"signature":"localDayFixtures :: FixtureCases Conformance.CalendarDays.Domain.LocalDay","symbol":"localDayFixtures"}
+binding {"kind":"initial-value","mappedName":"LocalDay","module":"Conformance.CalendarDays.Bindings","path":null,"schema":1,"signature":"initialLocalDay :: Conformance.CalendarDays.Domain.LocalDay","symbol":"initialLocalDay"}
+binding {"kind":"binding","mappedName":"MaybeLocalDay","module":"Conformance.CalendarDays.Bindings","path":"value","schema":1,"signature":"maybeLocalDayBinding.value :: Maybe (Day)","symbol":"maybeLocalDayBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeLocalDay","module":"Conformance.CalendarDays.Bindings","path":null,"schema":1,"signature":"maybeLocalDayFixtures :: FixtureCases Conformance.CalendarDays.Domain.MaybeLocalDay","symbol":"maybeLocalDayFixtures"}
+behavior {"aggregate":"CalendarStore","command":"StoreDate","evidence":"generated-authoritative","key":"behavior-v1-81c1074e5cad73be","kind":"required-rejection","outputs":[],"source":"Stored"}
+behavior {"aggregate":"CalendarStore","command":"StoreDate","evidence":"generated-authoritative","key":"behavior-v1-8a6ce5ac60391741","kind":"live-transition","outputs":[{"command":"StoreDate","ownership":"generated-command-identity"},{"command":"StoreDate","ownership":"generated-command-identity"}],"source":"Empty"}
+projection-catalog-fact cursor|calendar_lookup|calendar-writer|99
+projection-catalog-fact delivery|calendar_writer|subscription|87
+projection-catalog-fact freshness|calendar_lookup|wait-for-head:entire-log|99
+projection-catalog-fact group|calendar_rebuild|calendar_table|calendar_table|82
+projection-catalog-fact owner|calendar_writer|all|calendar_rebuild|calendar_table|10|calendar-writer|calendar-writer-v1|from-beginning|explicit|87
+projection-catalog-fact query|calendar_lookup|calendar_rebuild|calendar_table|calendar_table|99
+projection-catalog-fact supply|calendar_lookup|calendar_writer|calendar_rebuild|calendar_table|99|87
+projection-catalog-fact target|calendar_table|public|calendar_values|clear||76
+query-contract-baseline v1
+query-contract {"mappedDependencies":["MaybeLocalDay"],"position":"input","readModel":"calendar_lookup","typeExpression":"MaybeLocalDay"}
+query-contract {"mappedDependencies":["CalendarEnvelope","MaybeLocalDay"],"position":"result","readModel":"calendar_lookup","typeExpression":"CalendarEnvelope"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"CalendarStore","kind":"consumer-build"},{"consumer":"workqueue:calendar_jobs","kind":"consumer-build"},{"consumer":"read-model-query:calendar_lookup:result","kind":"consumer-build"},{"aggregate":"CalendarStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"calendar_jobs"},{"kind":"query-api","position":"result","readModel":"calendar_lookup"}],"consumerEvidence":[{"consumer":"CalendarStore","operation":null,"path":"CalendarStore command StoreDate .envelope : CalendarEnvelope","surface":"aggregate-command"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateAudited .envelope : CalendarEnvelope","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateStored .envelope : CalendarEnvelope","surface":"private-event-payload"},{"consumer":"workqueue:calendar_jobs","operation":null,"path":"workqueue calendar_jobs payload .envelope : CalendarEnvelope","surface":"workqueue-payload"},{"consumer":"read-model-query:calendar_lookup:result","operation":null,"path":"readmodel calendar_lookup query result : CalendarEnvelope","surface":"read-model-query-result"}],"consumers":["CalendarStore","workqueue:calendar_jobs","read-model-query:calendar_lookup:result"],"declaration":"CalendarEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.CalendarDays.Domain:CalendarEnvelope\u001fConformance.CalendarDays.Bindings.calendarEnvelopeBinding\u001f1\u001fconformance.calendar-days.CalendarEnvelope.v1\u001fConformance.CalendarDays.Bindings.calendarEnvelopeFixtures\u001f\u001fe73efd6bd0ecfd9b\u001frecord:CalendarEnvelope:labelled=labelled,namedOptional=namedOptional,optionalDay=optionalDay,primary=primary,sequence=sequence"},{"consequences":[{"consumer":"CalendarStore","kind":"consumer-build"},{"consumer":"workqueue:calendar_jobs","kind":"consumer-build"},{"aggregate":"CalendarStore","kind":"private-event-history"},{"aggregate":"CalendarStore","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"calendar_jobs"}],"consumerEvidence":[{"consumer":"CalendarStore","operation":null,"path":"CalendarStore command StoreDate .day : LocalDay","surface":"aggregate-command"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateAudited .day : LocalDay","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateStored .day : LocalDay","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore register current : LocalDay","surface":"snapshot-register"},{"consumer":"workqueue:calendar_jobs","operation":null,"path":"workqueue calendar_jobs payload .day : LocalDay","surface":"workqueue-payload"}],"consumers":["CalendarStore","workqueue:calendar_jobs"],"declaration":"LocalDay","identity":"structural\u001fkeiro-dsl:Conformance.CalendarDays.Domain:LocalDay\u001fConformance.CalendarDays.Bindings.localDayBinding\u001f1\u001fconformance.calendar-days.LocalDay.v1\u001fConformance.CalendarDays.Bindings.localDayFixtures\u001fConformance.CalendarDays.Bindings.initialLocalDay\u001f4500842d290242c3\u001fvalue:Day"},{"consequences":[{"consumer":"CalendarStore","kind":"consumer-build"},{"consumer":"workqueue:calendar_jobs","kind":"consumer-build"},{"consumer":"read-model-query:calendar_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:calendar_lookup:result","kind":"consumer-build"},{"aggregate":"CalendarStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"calendar_jobs"},{"kind":"query-api","position":"input","readModel":"calendar_lookup"},{"kind":"query-api","position":"result","readModel":"calendar_lookup"}],"consumerEvidence":[{"consumer":"CalendarStore","operation":null,"path":"CalendarStore command StoreDate .envelope : CalendarEnvelope .namedOptional : MaybeLocalDay","surface":"aggregate-command"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore command StoreDate .optionalDay : MaybeLocalDay","surface":"aggregate-command"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateAudited .envelope : CalendarEnvelope .namedOptional : MaybeLocalDay","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateAudited .optionalDay : MaybeLocalDay","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateStored .envelope : CalendarEnvelope .namedOptional : MaybeLocalDay","surface":"private-event-payload"},{"consumer":"CalendarStore","operation":null,"path":"CalendarStore event DateStored .optionalDay : MaybeLocalDay","surface":"private-event-payload"},{"consumer":"workqueue:calendar_jobs","operation":null,"path":"workqueue calendar_jobs payload .envelope : CalendarEnvelope .namedOptional : MaybeLocalDay","surface":"workqueue-payload"},{"consumer":"workqueue:calendar_jobs","operation":null,"path":"workqueue calendar_jobs payload .optionalDay : MaybeLocalDay","surface":"workqueue-payload"},{"consumer":"read-model-query:calendar_lookup:input","operation":null,"path":"readmodel calendar_lookup query input : MaybeLocalDay","surface":"read-model-query-input"},{"consumer":"read-model-query:calendar_lookup:result","operation":null,"path":"readmodel calendar_lookup query result : CalendarEnvelope .namedOptional : MaybeLocalDay","surface":"read-model-query-result"}],"consumers":["CalendarStore","workqueue:calendar_jobs","read-model-query:calendar_lookup:input","read-model-query:calendar_lookup:result"],"declaration":"MaybeLocalDay","identity":"structural\u001fkeiro-dsl:Conformance.CalendarDays.Domain:MaybeLocalDay\u001fConformance.CalendarDays.Bindings.maybeLocalDayBinding\u001f1\u001fconformance.calendar-days.MaybeLocalDay.v1\u001fConformance.CalendarDays.Bindings.maybeLocalDayFixtures\u001f\u001fc28177c9398266fc\u001fvalue:Optional(Day)"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["CalendarEnvelope","LocalDay","MaybeLocalDay"]}
diff --git a/test/conformance-checked-mapping-replay/CheckedMappingReplay/ProjectionCatalog/ProjectionCatalogHoles.hs b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ProjectionCatalog/ProjectionCatalogHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ProjectionCatalog/ProjectionCatalogHoles.hs
@@ -0,0 +1,23 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module CheckedMappingReplay.ProjectionCatalog.ProjectionCatalogHoles
+  ( ReplayWriterEvent (..)
+  , applyReplayWriterLive
+  , replayWriterIdempotencyKey
+  , applyReplayWriterReplay
+  , decodeReplayWriterReplay
+  ) where
+
+import Hasql.Transaction qualified as Tx
+import Keiro.Projection.Catalog qualified as Catalog
+import Kiroku.Store.Types (EventId, RecordedEvent)
+
+-- Projection owner replay_writer (order 10).
+data ReplayWriterEvent = ReplayWriterEvent
+applyReplayWriterLive :: RecordedEvent -> Tx.Transaction ()
+applyReplayWriterLive = error "HOLE: fill replay_writer live apply"
+replayWriterIdempotencyKey :: RecordedEvent -> EventId
+replayWriterIdempotencyKey = error "HOLE: return the durable event id for replay_writer"
+decodeReplayWriterReplay :: RecordedEvent -> Catalog.ReplayDecodeResult ReplayWriterEvent
+decodeReplayWriterReplay = error "HOLE: classify and decode every replay_writer source event"
+applyReplayWriterReplay :: ReplayWriterEvent -> RecordedEvent -> Tx.Transaction ()
+applyReplayWriterReplay = error "HOLE: fill replay_writer replay apply without live-only side effects"
diff --git a/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLedger/BehaviorHoles.hs b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLedger/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLedger/BehaviorHoles.hs
@@ -0,0 +1,13 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module CheckedMappingReplay.ReplayLedger.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-00d5b6d8d0fc6ef2") -- ReplayLedgerEmpty x ImportLegacy: replay-only transition
+  , Pending (BehaviorKey "behavior-v1-9846660db9e83048") -- ReplayLedgerEmpty x ImportLegacy: required rejection
+  , Pending (BehaviorKey "behavior-v1-cf9c72cd877a5085") -- ReplayLedgerEmpty x Record: live transition
+  , Pending (BehaviorKey "behavior-v1-e88b4f5c37ef8bf2") -- ReplayLedgerRecorded x Record: required rejection
+  , Pending (BehaviorKey "behavior-v1-efa5614712549991") -- ReplayLedgerRecorded x ImportLegacy: required rejection
+  ]
diff --git a/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLookup/ReadModelHoles.hs b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLookup/ReadModelHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayLookup/ReadModelHoles.hs
@@ -0,0 +1,14 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module CheckedMappingReplay.ReplayLookup.ReadModelHoles
+  ( replayLookupQuery
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable (replayLookupQualifiedTable)
+import Generated.CheckedMappingReplay.ReplayLookup.QueryContract (ReplayLookupQueryInput, ReplayLookupQueryResult)
+import Hasql.Transaction qualified as Tx
+
+-- HOLE: query "public"."checked_mapping_replay" via replayLookupQualifiedTable; never rely on search_path.
+-- The generated QueryContract owns query input/result type identity.
+-- Declared columns:
+replayLookupQuery :: ReplayLookupQueryInput -> Tx.Transaction ReplayLookupQueryResult
+replayLookupQuery _input = replayLookupQualifiedTable `seq` error "HOLE: fill replay_lookup query"
diff --git a/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayReaction/ProcessHoles.hs b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayReaction/ProcessHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayReaction/ProcessHoles.hs
@@ -0,0 +1,11 @@
+-- keiro-dsl process-hole contract v1
+-- HAND-OWNED typed decoder; created once and never overwritten.
+module CheckedMappingReplay.ReplayReaction.ProcessHoles (decodeReplayReactionInput) where
+
+import Data.Aeson (parseJSON)
+import Data.Aeson.Types (parseMaybe)
+import Generated.CheckedMappingReplay.ReplayReaction.Input (ReplayReactionInput)
+import Kiroku.Store.Types (RecordedEvent (..))
+
+decodeReplayReactionInput :: RecordedEvent -> Maybe ReplayReactionInput
+decodeReplayReactionInput RecordedEvent {payload} = parseMaybe parseJSON payload
diff --git a/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayTarget/BehaviorHoles.hs b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayTarget/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/CheckedMappingReplay/ReplayTarget/BehaviorHoles.hs
@@ -0,0 +1,9 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module CheckedMappingReplay.ReplayTarget.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-756d75346570c343") -- ReplayTargetReady x Store: live transition
+  ]
diff --git a/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Bindings.hs b/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Bindings.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
+
+-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
+-- and never overwrites it. Fill each HOLE and run the generated harness.
+module Conformance.CheckedMappingReplay.Bindings (
+    textLabelsFixtures
+  , textLabelsBinding
+  , initialReplayEnvelope
+  , replayEnvelopeFixtures
+  , replayEnvelopeBinding
+  , maybeLabelFixtures
+  , maybeLabelBinding
+  , maybeContentHashFixtures
+  , maybeContentHashBinding
+  , importantDaysFixtures
+  , importantDaysBinding
+  , contentHashFixtures
+  , contentHashBinding
+) where
+
+import Conformance.CheckedMappingReplay.Domain (ContentHash, ImportantDays, MaybeContentHash, MaybeLabel, ReplayEnvelope, TextLabels)
+import Conformance.CheckedMappingReplay.Domain qualified as Domain
+import Generated.CheckedMappingReplay.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.ImportantDays qualified as ShapeImportantDays
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel qualified as ShapeMaybeLabel
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+import Generated.CheckedMappingReplay.Structural.Shape.TextLabels qualified as ShapeTextLabels
+import Data.ByteString qualified as BS
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Data.Set qualified as Set
+import Data.Text (Text)
+import Data.Time.Calendar (fromGregorian)
+import Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId)
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+-- HOLE: provide deterministic labelled conformance fixtures for TextLabels
+textLabelsFixtures :: FixtureCases TextLabels
+textLabelsFixtures =
+  FixtureCases
+    ( ("empty", Domain.TextLabels Set.empty)
+        :| [ ("ordinary", Domain.TextLabels (Set.fromList ["a", "b"])),
+             ("code-point-order", Domain.TextLabels (Set.fromList ["\x10000", "\xE000", "ä", "a\x0308", "a", "A"]))
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+textLabelsBinding :: StructuralBinding TextLabels ShapeTextLabels.TextLabelsShape
+textLabelsBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.TextLabels value -> value
+    , bindingFromShape = \case
+      value -> Domain.TextLabels value
+    }
+
+-- HOLE: provide the initial register value for ReplayEnvelope
+initialReplayEnvelope :: ReplayEnvelope
+initialReplayEnvelope =
+  Domain.ReplayEnvelope
+    (Domain.MaybeLabel Nothing)
+    (Domain.ImportantDays [fromGregorian 1970 1 1])
+    (Domain.TextLabels Set.empty)
+    (Domain.MaybeContentHash Nothing)
+    retainedV7
+    (Map.singleton retainedV7 "current")
+    Nothing
+
+-- HOLE: provide deterministic labelled conformance fixtures for ReplayEnvelope
+replayEnvelopeFixtures :: FixtureCases ReplayEnvelope
+replayEnvelopeFixtures =
+  FixtureCases
+    ( ("initial", initialReplayEnvelope)
+        :| [
+             ( "mixed-history",
+               Domain.ReplayEnvelope
+                 (Domain.MaybeLabel (Just "retained"))
+                 (Domain.ImportantDays [fromGregorian 2000 2 29, fromGregorian 12345678901234567890 6 30])
+                 (Domain.TextLabels (Set.fromList ["b", "a"]))
+                 (Domain.MaybeContentHash (Just (bytes [0, 175])))
+                 retainedV5
+                 (Map.fromList [(retainedV5, "historical-v5"), (retainedV7, "current-v7")])
+                 (Just (Set.fromList ["optional", "labels"]))
+             )
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+replayEnvelopeBinding :: StructuralBinding ReplayEnvelope ShapeReplayEnvelope.ReplayEnvelopeShape
+replayEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.ReplayEnvelope labelValue daysValue labelsValue contentHashValue primaryValue identitiesValue optionalLabelsValue ->
+        ShapeReplayEnvelope.ReplayEnvelope
+          (bindingToShape maybeLabelBinding labelValue)
+          (bindingToShape importantDaysBinding daysValue)
+          (bindingToShape textLabelsBinding labelsValue)
+          (bindingToShape maybeContentHashBinding contentHashValue)
+          primaryValue
+          identitiesValue
+          optionalLabelsValue
+    , bindingFromShape = \case
+      ShapeReplayEnvelope.ReplayEnvelope labelValue daysValue labelsValue contentHashValue primaryValue identitiesValue optionalLabelsValue ->
+        Domain.ReplayEnvelope
+          (bindingFromShape maybeLabelBinding labelValue)
+          (bindingFromShape importantDaysBinding daysValue)
+          (bindingFromShape textLabelsBinding labelsValue)
+          (bindingFromShape maybeContentHashBinding contentHashValue)
+          primaryValue
+          identitiesValue
+          optionalLabelsValue
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for MaybeLabel
+maybeLabelFixtures :: FixtureCases MaybeLabel
+maybeLabelFixtures = FixtureCases (("absent", Domain.MaybeLabel Nothing) :| [("present", Domain.MaybeLabel (Just "label"))])
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+maybeLabelBinding :: StructuralBinding MaybeLabel ShapeMaybeLabel.MaybeLabelShape
+maybeLabelBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.MaybeLabel value -> value
+    , bindingFromShape = \case
+      value -> Domain.MaybeLabel value
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for MaybeContentHash
+maybeContentHashFixtures :: FixtureCases MaybeContentHash
+maybeContentHashFixtures =
+  FixtureCases
+    ( ("absent", Domain.MaybeContentHash Nothing)
+        :| [("empty", Domain.MaybeContentHash (Just (bytes []))), ("leading-zero", Domain.MaybeContentHash (Just (bytes [0, 175])))]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+maybeContentHashBinding :: StructuralBinding MaybeContentHash ShapeMaybeContentHash.MaybeContentHashShape
+maybeContentHashBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.MaybeContentHash value -> (\(Domain.ContentHash rawBytes) -> rawBytes) <$> value
+    , bindingFromShape = \case
+      value -> Domain.MaybeContentHash (Domain.ContentHash <$> value)
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for ImportantDays
+importantDaysFixtures :: FixtureCases ImportantDays
+importantDaysFixtures =
+  FixtureCases
+    ( ("empty", Domain.ImportantDays [])
+        :| [ ("leap-day", Domain.ImportantDays [fromGregorian 2000 2 29]),
+             ("full-carrier", Domain.ImportantDays [fromGregorian (-1) 1 1, fromGregorian 12345678901234567890 6 30])
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+importantDaysBinding :: StructuralBinding ImportantDays ShapeImportantDays.ImportantDaysShape
+importantDaysBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.ImportantDays value -> value
+    , bindingFromShape = \case
+      value -> Domain.ImportantDays value
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for ContentHash
+contentHashFixtures :: FixtureCases ContentHash
+contentHashFixtures =
+  FixtureCases
+    ( ("empty", bytes [])
+        :| [("leading-zero", bytes [0, 175]), ("arbitrary-length", bytes [0, 17, 34, 51, 68])]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+contentHashBinding :: StructuralBinding ContentHash ShapeContentHash.ContentHashShape
+contentHashBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.ContentHash value -> value
+    , bindingFromShape = \case
+      value -> Domain.ContentHash value
+    }
+
+retainedV5Text, retainedV7Text :: Text
+retainedV5Text = "retained_58kj0y515rbwebzaxwzzknjqnk"
+retainedV7Text = "retained_01h455vb4pex5vsknk084sn02q"
+
+retainedV5, retainedV7 :: RetainedId
+retainedV5 = committedId retainedV5Text
+retainedV7 = committedId retainedV7Text
+
+bytes :: [Word] -> ContentHash
+bytes = Domain.ContentHash . BS.pack . map fromIntegral
+
+committedId :: Text -> RetainedId
+committedId value = case parseRetainedId value of
+  Right parsed -> parsed
+  Left reason -> error ("invalid committed RetainedId fixture: " <> show reason)
diff --git a/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Domain.hs b/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Conformance/CheckedMappingReplay/Domain.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Conformance.CheckedMappingReplay.Domain where
+
+import Data.Aeson (FromJSON (..), ToJSON (..), Value (..), object, withObject, (.:), (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser)
+import Data.ByteString (ByteString)
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Proxy (Proxy)
+import Data.Set (Set)
+import Data.Text (Text)
+import Data.Time.Calendar (Day)
+import GHC.Generics (Generic)
+import Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId, retainedIdText)
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Refined (encodeBase16Bytes, parseBase16Bytes)
+
+newtype MaybeLabel = MaybeLabel {unMaybeLabel :: Maybe Text}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeLabel where
+  canonicalTypeName :: Proxy MaybeLabel -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.MaybeLabel.v1"
+
+newtype ImportantDays = ImportantDays {unImportantDays :: [Day]}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName ImportantDays where
+  canonicalTypeName :: Proxy ImportantDays -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.ImportantDays.v1"
+
+newtype TextLabels = TextLabels {unTextLabels :: Set Text}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName TextLabels where
+  canonicalTypeName :: Proxy TextLabels -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.TextLabels.v1"
+
+newtype ContentHash = ContentHash {unContentHash :: ByteString}
+  deriving stock (Eq, Generic, Show)
+
+instance ToJSON ContentHash where
+  toJSON (ContentHash bytes) = encodeBase16Bytes bytes
+
+instance FromJSON ContentHash where
+  parseJSON value = ContentHash <$> parseBase16Bytes value
+
+instance CanonicalTypeName ContentHash where
+  canonicalTypeName :: Proxy ContentHash -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.ContentHash.v1"
+
+newtype MaybeContentHash = MaybeContentHash {unMaybeContentHash :: Maybe ContentHash}
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeContentHash where
+  canonicalTypeName :: Proxy MaybeContentHash -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.MaybeContentHash.v1"
+
+data ReplayEnvelope = ReplayEnvelope
+  { label :: !MaybeLabel,
+    days :: !ImportantDays,
+    labels :: !TextLabels,
+    contentHash :: !MaybeContentHash,
+    primary :: !RetainedId,
+    identities :: !(Map RetainedId Text),
+    optionalLabels :: !(Maybe (Set Text))
+  }
+  deriving stock (Eq, Generic, Show)
+
+instance ToJSON ReplayEnvelope where
+  toJSON (ReplayEnvelope labelValue daysValue labelsValue contentHashValue primaryValue identitiesValue optionalLabelsValue) =
+    object
+      [ "label" .= labelValue,
+        "days" .= daysValue,
+        "labels" .= labelsValue,
+        "contentHash" .= contentHashValue,
+        "primary" .= retainedIdText primaryValue,
+        "identities" .= Object (KeyMap.fromList [(Key.fromText (retainedIdText key), toJSON value) | (key, value) <- Map.toList identitiesValue]),
+        "optionalLabels" .= optionalLabelsValue
+      ]
+
+instance FromJSON ReplayEnvelope where
+  parseJSON = withObject "ReplayEnvelope" $ \value ->
+    ReplayEnvelope
+      <$> value .: "label"
+      <*> value .: "days"
+      <*> value .: "labels"
+      <*> value .: "contentHash"
+      <*> (value .: "primary" >>= either (fail . show) pure . parseRetainedId)
+      <*> (value .: "identities" >>= parseIdentityMap)
+      <*> value .: "optionalLabels"
+
+parseIdentityMap :: Value -> Parser (Map RetainedId Text)
+parseIdentityMap = withObject "Map RetainedId Text" $ \value ->
+  Map.fromList <$> traverse parseEntry (KeyMap.toList value)
+  where
+    parseEntry (rawKey, rawValue) = do
+      key <- either (fail . show) pure (parseRetainedId (Key.toText rawKey))
+      item <- parseJSON rawValue
+      pure (key, item)
+
+instance CanonicalTypeName ReplayEnvelope where
+  canonicalTypeName :: Proxy ReplayEnvelope -> Text
+  canonicalTypeName _ = "conformance.checked-mapping-replay.ReplayEnvelope.v1"
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs
@@ -0,0 +1,34 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context checked-mapping-replay behavior source map; do not edit.
+module Generated.CheckedMappingReplay.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-00d5b6d8d0fc6ef2" -> Just (BehaviorSourceLocation "domain/service.keiro" 23 3)
+  "behavior-v1-756d75346570c343" -> Just (BehaviorSourceLocation "domain/service.keiro" 39 3)
+  "behavior-v1-9846660db9e83048" -> Just (BehaviorSourceLocation "domain/service.keiro" 8 10)
+  "behavior-v1-cf9c72cd877a5085" -> Just (BehaviorSourceLocation "domain/service.keiro" 16 3)
+  "behavior-v1-e88b4f5c37ef8bf2" -> Just (BehaviorSourceLocation "domain/service.keiro" 8 16)
+  "behavior-v1-efa5614712549991" -> Just (BehaviorSourceLocation "domain/service.keiro" 8 16)
+  _ -> 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-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context checked-mapping-replay generated nominal declarations; do not edit.
+module Generated.CheckedMappingReplay.Nominals
+  ( RetainedId
+  , parseRetainedId
+  , mkRetainedId
+  , retainedIdText
+  ) where
+
+import Generated.CheckedMappingReplay.Nominals.Internal (RetainedId, mkRetainedId, parseRetainedId, retainedIdText)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs
@@ -0,0 +1,40 @@
+-- @generated by keiro-dsl 0.18.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
+  , mkRetainedId
+  , retainedIdText
+  , unsafeRetainedIdFromLegacyText
+  ) where
+
+import Data.Aeson (FromJSON (..), ToJSON (..), withText)
+import Data.Text (Text)
+import Data.Text qualified as T
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName)
+import Keiro.Codec.IdDomain (typeIdV5OrV7Domain, validateIdDomainText)
+
+newtype RetainedId = RetainedId Text
+  deriving stock (Generic, Eq, Ord, Show)
+
+instance CanonicalTypeName RetainedId
+
+instance ToJSON RetainedId where
+  toJSON = toJSON . retainedIdText
+
+instance FromJSON RetainedId where
+  parseJSON = withText "RetainedId" (either (fail . T.unpack) pure . parseRetainedId)
+
+parseRetainedId :: Text -> Either Text RetainedId
+parseRetainedId input = case validateIdDomainText (typeIdV5OrV7Domain "retained") input of
+  Left reason -> Left (T.pack (show reason))
+  Right () -> Right (RetainedId input)
+
+mkRetainedId :: Text -> Either Text RetainedId
+mkRetainedId = parseRetainedId
+
+retainedIdText :: RetainedId -> Text
+retainedIdText (RetainedId value) = value
+
+unsafeRetainedIdFromLegacyText :: Text -> RetainedId
+unsafeRetainedIdFromLegacyText = RetainedId
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
@@ -0,0 +1,80 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog checked-mapping-replay; do not edit.
+{-# LANGUAGE OverloadedStrings #-}
+module Generated.CheckedMappingReplay.ProjectionCatalog
+  ( projectionCatalog
+  , validatedProjectionCatalog
+  , projectionCatalogInventory
+  , projectionCatalogRegistrations
+  , projectionCatalogAsyncRegistrations
+  , projectionCatalogQuerySupplies
+  , registerProjectionCatalog
+  , replayWriterProjectionSet
+  , replayRebuildRebuildGroupId
+  , startReplayRebuildRebuild
+  ) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Effectful (Eff, IOE, (:>))
+import Keiro.Projection (AsyncProjection (..))
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel.Rebuild qualified as Rebuild
+import Kiroku.Store.Effect (Store)
+import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
+import CheckedMappingReplay.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
+import Generated.CheckedMappingReplay.ReplayLookup.ReadModel qualified as RMReplayLookup
+
+must :: Show error => Either error value -> value
+must = either (error . show) id
+
+replayWriterProjectionSet :: Catalog.ProjectionSet Holes.ReplayWriterEvent
+replayWriterProjectionSet =
+  Catalog.ProjectionSet
+    (must (Catalog.mkSourceId "all"))
+    (Catalog.ProjectionDefinition
+      (must (Catalog.mkProjectionId "replay_writer"))
+      (must (Catalog.mkRebuildGroupId "replay_rebuild"))
+      ((must (Catalog.mkTargetId "replay_table")) :| [])
+      (Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeReplayWriterReplay Holes.applyReplayWriterReplay))
+      (Catalog.AsyncHandler (AsyncProjection "checked-mapping-replay-writer-v1" "checked-mapping-replay-replay-lookup" "checked-mapping-replay-writer" Holes.applyReplayWriterLive Holes.replayWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "checked-mapping-replay-writer")) (must (Catalog.mkDedupKeyId "checked-mapping-replay-writer-v1")) (must (Catalog.mkClaimSite "projection-owner replay_writer async-handler")) :| [])
+      (must (Catalog.mkClaimSite "projection-owner replay_writer"))
+      :| [])
+    (must (Catalog.mkClaimSite "projection-owner replay_writer source"))
+
+projectionCatalog :: Catalog.ProjectionCatalog
+projectionCatalog =
+  Catalog.ProjectionCatalog
+    [Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
+    [Catalog.TargetDeclaration (must (Catalog.mkTargetId "replay_table")) (Catalog.QualifiedTable "public" "checked_mapping_replay") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target replay_table"))]
+    [Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "replay_rebuild")) [(must (Catalog.mkTargetId "replay_table"))] [] (must (Catalog.mkClaimSite "rebuild-group replay_rebuild"))]
+    []
+    []
+    [Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "checked-mapping-replay-writer")) "checked-mapping-replay-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner replay_writer subscription"))]
+    [Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "checked-mapping-replay-writer-v1")) "checked-mapping-replay-writer-v1" (must (Catalog.mkClaimSite "projection-owner replay_writer dedup"))]
+    [Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "replay_lookup")) RMReplayLookup.replayLookupReadModel (must (Catalog.mkRebuildGroupId "replay_rebuild")) [(must (Catalog.mkTargetId "replay_table"))] (must (Catalog.mkClaimSite "readmodel replay_lookup")))]
+    [Catalog.SomeProjectionSet replayWriterProjectionSet]
+
+validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
+validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
+  Catalog.Success catalog -> catalog
+  Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
+
+projectionCatalogInventory :: Catalog.CatalogInventory
+projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
+
+projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
+projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
+
+projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
+projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
+
+projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
+projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
+
+registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
+registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
+
+replayRebuildRebuildGroupId :: Catalog.RebuildGroupId
+replayRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "replay_rebuild"))
+
+startReplayRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
+startReplayRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog replayRebuildRebuildGroupId
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs
@@ -0,0 +1,30 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.CheckedMappingReplay.ReplayAudit (auditTargets) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.EventStream qualified as ReplayLedger
+import Generated.CheckedMappingReplay.ReplayTarget.EventStream qualified as ReplayTarget
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = ReplayLedger.replayLedgerEventStream
+        , category = Stream.categoryText ReplayLedger.replayLedgerCategory
+        , mkStream = streamInCategory (Stream.categoryText ReplayLedger.replayLedgerCategory)
+        }
+  , SomeAuditTarget
+      AuditTarget
+        { eventStream = ReplayTarget.replayTargetEventStream
+        , category = Stream.categoryText ReplayTarget.replayTargetCategory
+        , mkStream = streamInCategory (Stream.categoryText ReplayTarget.replayTargetCategory)
+        }
+  ]
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs
@@ -0,0 +1,61 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from contract replay_events; do not edit.
+module Generated.CheckedMappingReplay.ReplayEvents.Contract
+  ( ReplayEventsPayload (..)
+  , ReplayLinkedData (..)
+  , replayEventsTopic
+  , messageTypeOf
+  , encodeReplayEventsPayload
+  , parseReplayEventsPayload
+  ) where
+
+import Data.Aeson (Value, object, withObject, withText, (.=))
+import Data.Aeson.Types (Parser, explicitParseField, parseEither)
+import Generated.CheckedMappingReplay.Nominals qualified as Nominals
+import Generated.CheckedMappingReplay.Structural.NominalLeaves qualified as NominalLeaves
+import Data.Text (Text)
+import qualified Data.Text as T
+
+-- topic constants
+replayEventsTopic :: Text
+replayEventsTopic = "checked.mapping.replay.events"
+
+-- the closed payload set (discriminated by "messageType")
+data ReplayLinkedData = ReplayLinkedData {retainedId :: !Nominals.RetainedId}
+  deriving stock (Eq, Show)
+
+data ReplayEventsPayload
+  = ReplayLinked !ReplayLinkedData
+  deriving stock (Eq, Show)
+
+messageTypeOf :: ReplayEventsPayload -> Text
+messageTypeOf = \case
+  ReplayLinked {} -> "ReplayLinked"
+
+encodeReplayEventsPayload :: ReplayEventsPayload -> Value
+encodeReplayEventsPayload = \case
+  ReplayLinked payload ->
+    object
+      [ "messageType" .= ("ReplayLinked" :: Text),
+        "retainedId" .= NominalLeaves.encodeRetainedIdLeaf payload.retainedId
+      ]
+
+parseReplayEventsPayload :: Value -> Either Text ReplayEventsPayload
+parseReplayEventsPayload = mapLeftText . parseEither (withObject "ReplayEventsPayload" go)
+  where
+    go o = do
+      kind <- explicitParseField (withText "messageType" validateMessageType) o "messageType"
+      case kind of
+        "ReplayLinked" ->
+          ReplayLinked
+            <$> ( ReplayLinkedData
+                    <$> explicitParseField NominalLeaves.parseRetainedIdLeaf o "retainedId"
+                )
+        _ -> fail "validated message type was not handled"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+validateMessageType :: Text -> Parser Text
+validateMessageType kind
+  | kind `elem` ["ReplayLinked"] = pure kind
+  | otherwise = fail ("unknown message type " <> show kind <> "; expected one of: ReplayLinked")
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs
@@ -0,0 +1,190 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit.
+module Generated.CheckedMappingReplay.ReplayJobs.Queue
+  ( ReplayJob (..)
+  , encodeReplayJob
+  , parseReplayJob
+  , encodeContentHashMapped
+  , decodeContentHashMapped
+  , encodeImportantDaysMapped
+  , decodeImportantDaysMapped
+  , encodeMaybeContentHashMapped
+  , decodeMaybeContentHashMapped
+  , encodeMaybeLabelMapped
+  , decodeMaybeLabelMapped
+  , encodeReplayEnvelopeMapped
+  , decodeReplayEnvelopeMapped
+  , encodeTextLabelsMapped
+  , decodeTextLabelsMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)
+import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (encodeRetainedIdLeaf, parseRetainedIdLeaf)
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (parseRetainedIdLeafKey, renderRetainedIdLeafKey)
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ContentHash, ImportantDays, MaybeContentHash, MaybeLabel, ReplayEnvelope, TextLabels)
+import Generated.CheckedMappingReplay.Nominals (RetainedId)
+import Generated.CheckedMappingReplay.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.ImportantDays qualified as ShapeImportantDays
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel qualified as ShapeMaybeLabel
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+import Generated.CheckedMappingReplay.Structural.Shape.TextLabels qualified as ShapeTextLabels
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "checked_mapping_replay"
+queueDlq = "checked_mapping_replay_dlq"
+queueTable = "pgmq.q_checked_mapping_replay"
+
+data ReplayJob = ReplayJob
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Eq, Show)
+
+encodeContentHashMapped :: ContentHash -> Value
+encodeContentHashMapped = encodeContentHashShape . bindingToShape Bindings.contentHashBinding
+
+parseContentHashMapped :: Value -> Parser ContentHash
+parseContentHashMapped value = bindingFromShape Bindings.contentHashBinding <$> parseContentHashShape value
+
+decodeContentHashMapped :: Value -> Either Text ContentHash
+decodeContentHashMapped = mapLeftText . parseEither parseContentHashMapped
+
+encodeContentHashShape :: ShapeContentHash.ContentHashShape -> Value
+encodeContentHashShape = encodeBase16Bytes
+
+parseContentHashShape :: Value -> Parser ShapeContentHash.ContentHashShape
+parseContentHashShape = parseBase16Bytes
+
+encodeImportantDaysMapped :: ImportantDays -> Value
+encodeImportantDaysMapped = encodeImportantDaysShape . bindingToShape Bindings.importantDaysBinding
+
+parseImportantDaysMapped :: Value -> Parser ImportantDays
+parseImportantDaysMapped value = bindingFromShape Bindings.importantDaysBinding <$> parseImportantDaysShape value
+
+decodeImportantDaysMapped :: Value -> Either Text ImportantDays
+decodeImportantDaysMapped = mapLeftText . parseEither parseImportantDaysMapped
+
+encodeImportantDaysShape :: ShapeImportantDays.ImportantDaysShape -> Value
+encodeImportantDaysShape value = toJSON (map (\item0 -> encodeCalendarDay (item0)) (value))
+
+parseImportantDaysShape :: Value -> Parser ShapeImportantDays.ImportantDaysShape
+parseImportantDaysShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseCalendarDay) item0 <?> Index index0) (zip [0..] items0)
+
+encodeMaybeContentHashMapped :: MaybeContentHash -> Value
+encodeMaybeContentHashMapped = encodeMaybeContentHashShape . bindingToShape Bindings.maybeContentHashBinding
+
+parseMaybeContentHashMapped :: Value -> Parser MaybeContentHash
+parseMaybeContentHashMapped value = bindingFromShape Bindings.maybeContentHashBinding <$> parseMaybeContentHashShape value
+
+decodeMaybeContentHashMapped :: Value -> Either Text MaybeContentHash
+decodeMaybeContentHashMapped = mapLeftText . parseEither parseMaybeContentHashMapped
+
+encodeMaybeContentHashShape :: ShapeMaybeContentHash.MaybeContentHashShape -> Value
+encodeMaybeContentHashShape value = maybe Null (\item0 -> encodeContentHashShape (item0)) (value)
+
+parseMaybeContentHashShape :: Value -> Parser ShapeMaybeContentHash.MaybeContentHashShape
+parseMaybeContentHashShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0
+
+encodeMaybeLabelMapped :: MaybeLabel -> Value
+encodeMaybeLabelMapped = encodeMaybeLabelShape . bindingToShape Bindings.maybeLabelBinding
+
+parseMaybeLabelMapped :: Value -> Parser MaybeLabel
+parseMaybeLabelMapped value = bindingFromShape Bindings.maybeLabelBinding <$> parseMaybeLabelShape value
+
+decodeMaybeLabelMapped :: Value -> Either Text MaybeLabel
+decodeMaybeLabelMapped = mapLeftText . parseEither parseMaybeLabelMapped
+
+encodeMaybeLabelShape :: ShapeMaybeLabel.MaybeLabelShape -> Value
+encodeMaybeLabelShape value = maybe Null (\item0 -> toJSON (item0)) (value)
+
+parseMaybeLabelShape :: Value -> Parser ShapeMaybeLabel.MaybeLabelShape
+parseMaybeLabelShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseJSON) other0
+
+encodeReplayEnvelopeMapped :: ReplayEnvelope -> Value
+encodeReplayEnvelopeMapped = encodeReplayEnvelopeShape . bindingToShape Bindings.replayEnvelopeBinding
+
+parseReplayEnvelopeMapped :: Value -> Parser ReplayEnvelope
+parseReplayEnvelopeMapped value = bindingFromShape Bindings.replayEnvelopeBinding <$> parseReplayEnvelopeShape value
+
+decodeReplayEnvelopeMapped :: Value -> Either Text ReplayEnvelope
+decodeReplayEnvelopeMapped = mapLeftText . parseEither parseReplayEnvelopeMapped
+
+encodeReplayEnvelopeShape :: ShapeReplayEnvelope.ReplayEnvelopeShape -> Value
+encodeReplayEnvelopeShape shape =
+  object
+      [ "label" .= encodeMaybeLabelShape (shape.label)
+      , "days" .= encodeImportantDaysShape (shape.days)
+      , "labels" .= encodeTextLabelsShape (shape.labels)
+      , "contentHash" .= encodeMaybeContentHashShape (shape.contentHash)
+      , "primary" .= encodeRetainedIdLeaf shape.primary
+      , "identities" .= Object (KeyMap.fromList [(Key.fromText (renderRetainedIdLeafKey key0), toJSON (item0)) | (key0, item0) <- Map.toList (shape.identities)])
+      , "optionalLabels" .= maybe Null (\item0 -> encodeTextSet (item0)) (shape.optionalLabels)
+      ]
+
+parseReplayEnvelopeShape :: Value -> Parser ShapeReplayEnvelope.ReplayEnvelopeShape
+parseReplayEnvelopeShape = withObject "ReplayEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "ReplayEnvelope" ["label", "days", "labels", "contentHash", "primary", "identities", "optionalLabels"] objectValue
+  ShapeReplayEnvelope.ReplayEnvelope
+    <$> explicitParseField (parseMaybeLabelShape) objectValue "label"
+    <*> explicitParseField (parseImportantDaysShape) objectValue "days"
+    <*> explicitParseField (parseTextLabelsShape) objectValue "labels"
+    <*> explicitParseField (parseMaybeContentHashShape) objectValue "contentHash"
+    <*> explicitParseField (parseRetainedIdLeaf) objectValue "primary"
+    <*> explicitParseField (\value0 -> withObject "Map[RetainedId]" (\object0 -> Map.fromList <$> traverse (\(rawKey0, item0) -> do key0 <- parseRetainedIdLeafKey (Key.toText rawKey0) <?> Key rawKey0; parsedItem0 <- (parseJSON) item0 <?> Key rawKey0; pure (key0, parsedItem0)) (KeyMap.toList object0)) value0) objectValue "identities"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0) objectValue "optionalLabels"
+
+encodeTextLabelsMapped :: TextLabels -> Value
+encodeTextLabelsMapped = encodeTextLabelsShape . bindingToShape Bindings.textLabelsBinding
+
+parseTextLabelsMapped :: Value -> Parser TextLabels
+parseTextLabelsMapped value = bindingFromShape Bindings.textLabelsBinding <$> parseTextLabelsShape value
+
+decodeTextLabelsMapped :: Value -> Either Text TextLabels
+decodeTextLabelsMapped = mapLeftText . parseEither parseTextLabelsMapped
+
+encodeTextLabelsShape :: ShapeTextLabels.TextLabelsShape -> Value
+encodeTextLabelsShape value = encodeTextSet (value)
+
+parseTextLabelsShape :: Value -> Parser ShapeTextLabels.TextLabelsShape
+parseTextLabelsShape = parseTextSet
+
+encodeReplayJob :: ReplayJob -> Value
+encodeReplayJob payload =
+  object
+    [ "retained_id" .= encodeRetainedIdLeaf payload.retainedId
+    , "envelope" .= encodeReplayEnvelopeMapped payload.envelope
+    ]
+
+parseReplayJob :: Value -> Either Text ReplayJob
+parseReplayJob = mapLeftText . parseEither (withObject "ReplayJob" go)
+  where
+    go objectValue = ReplayJob <$> explicitParseField (parseRetainedIdLeaf) objectValue "retained_id" <*> explicitParseField (parseReplayEnvelopeMapped) objectValue "envelope"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.CheckedMappingReplay.ReplayJobs.QueueCodec (replayJobsPayloadCodec, replayJobsJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.CheckedMappingReplay.ReplayJobs.Queue (ReplayJob, encodeReplayJob, parseReplayJob)
+
+replayJobsPayloadCodec :: Codec ReplayJob
+replayJobsPayloadCodec =
+  Codec
+    { eventTypes = EventType "ReplayJob" :| []
+    , eventType = \_ -> EventType "ReplayJob"
+    , schemaVersion = 1
+    , encode = encodeReplayJob
+    , decode = \_ -> parseReplayJob
+    , upcasters = []
+    }
+
+replayJobsJobCodec :: JobCodec ReplayJob
+replayJobsJobCodec = keiroJobCodec replayJobsPayloadCodec
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit.
+module Generated.CheckedMappingReplay.ReplayJobs.QueuePolicy
+  ( ReplayJobsOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data ReplayJobsOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: ReplayJobsOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs
@@ -0,0 +1,387 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.Codec (encodeReplayLedgerEvent, parseReplayLedgerEvent, replayLedgerCodec)
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Generated.CheckedMappingReplay.ReplayLedger.Transducer (replayLedgerTransducer)
+import Generated.CheckedMappingReplay.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 :: !ReplayLedgerVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef ReplayLedgerVertex))
+  , target :: !(Maybe ReplayLedgerVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty ReplayLedgerEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [ReplayLedgerEvent]
+      , command :: ReplayLedgerCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [ReplayLedgerEvent]
+      , observedChunk :: [ReplayLedgerEvent]
+      }
+  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 =
+  [ -- ReplayLedgerEmpty x ImportLegacy: replay-only transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-00d5b6d8d0fc6ef2"
+      , kind = ReplayTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = ReplayLedgerEmpty
+      , commandName = "ImportLegacy"
+      , expectedEdge = (Just (K.EdgeRef ReplayLedgerEmpty 1))
+      , target = Just ReplayLedgerRecorded
+      , eventKinds = ["LegacyMappingImported"]
+      }
+  , -- ReplayLedgerEmpty x ImportLegacy: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-9846660db9e83048"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = ReplayLedgerEmpty
+      , commandName = "ImportLegacy"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- ReplayLedgerEmpty x Record: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-cf9c72cd877a5085"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = ReplayLedgerEmpty
+      , commandName = "Record"
+      , expectedEdge = (Just (K.EdgeRef ReplayLedgerEmpty 0))
+      , target = Just ReplayLedgerRecorded
+      , eventKinds = ["MappingRecorded", "MappingAudited"]
+      }
+  , -- ReplayLedgerRecorded x Record: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-e88b4f5c37ef8bf2"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = ReplayLedgerRecorded
+      , commandName = "Record"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- ReplayLedgerRecorded x ImportLegacy: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-efa5614712549991"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = ReplayLedgerRecorded
+      , commandName = "ImportLegacy"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: ReplayLedger"
+  , "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 -> [ReplayLedgerEvent] -> ReplayLedgerCommand -> 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 -> (ReplayLedgerVertex, K.RegFile ReplayLedgerRegs) -> ReplayLedgerCommand -> 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 replayLedgerTransducer 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 -> (ReplayLedgerVertex, K.RegFile ReplayLedgerRegs) -> ReplayLedgerCommand -> 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 replayLedgerTransducer 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 replayLedgerTransducer 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 replayLedgerTransducer 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 ReplayLedgerRegs ReplayLedgerVertex ReplayLedgerEvent -> 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 -> [ReplayLedgerEvent] -> [ReplayLedgerEvent] -> 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 replayLedgerTransducer (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 ReplayLedgerVertex] -> 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 -> [ReplayLedgerEvent] -> Either BehaviorFailure (K.ReplaySuccess ReplayLedgerRegs ReplayLedgerVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [ReplayLedgerEvent] -> Either Text [ReplayLedgerEvent]
+decodeEvents = traverse (\event -> parseReplayLedgerEvent (Codec.eventType replayLedgerCodec event) (encodeReplayLedgerEvent event))
+
+commandKind :: ReplayLedgerCommand -> Text
+commandKind command = case command of
+  Record _ -> "Record"
+  ImportLegacy _ -> "ImportLegacy"
+
+eventKind :: ReplayLedgerEvent -> Text
+eventKind event = case Codec.eventType replayLedgerCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile ReplayLedgerRegs -> K.RegFile ReplayLedgerRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current) && (left K.! #currentId) == (right K.! #currentId)
+
+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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs
@@ -0,0 +1,244 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.Codec (
+    replayLedgerCodec,
+    parseReplayLedgerEvent,
+    encodeReplayLedgerEvent,
+    encodeContentHashMapped,
+    decodeContentHashMapped,
+    encodeImportantDaysMapped,
+    decodeImportantDaysMapped,
+    encodeMaybeContentHashMapped,
+    decodeMaybeContentHashMapped,
+    encodeMaybeLabelMapped,
+    decodeMaybeLabelMapped,
+    encodeReplayEnvelopeMapped,
+    decodeReplayEnvelopeMapped,
+    encodeTextLabelsMapped,
+    decodeTextLabelsMapped,
+) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Generated.CheckedMappingReplay.Nominals (retainedIdText)
+import Generated.CheckedMappingReplay.Nominals.Internal (unsafeRetainedIdFromLegacyText)
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.:), (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)
+import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (encodeRetainedIdLeaf, parseRetainedIdLeaf)
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (parseRetainedIdLeafKey, renderRetainedIdLeafKey)
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ContentHash, ImportantDays, MaybeContentHash, MaybeLabel, ReplayEnvelope, TextLabels)
+import Generated.CheckedMappingReplay.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.ImportantDays qualified as ShapeImportantDays
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel qualified as ShapeMaybeLabel
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+import Generated.CheckedMappingReplay.Structural.Shape.TextLabels qualified as ShapeTextLabels
+
+
+
+encodeContentHashMapped :: ContentHash -> Value
+encodeContentHashMapped = encodeContentHashShape . bindingToShape Bindings.contentHashBinding
+
+parseContentHashMapped :: Value -> Parser ContentHash
+parseContentHashMapped value = bindingFromShape Bindings.contentHashBinding <$> parseContentHashShape value
+
+decodeContentHashMapped :: Value -> Either Text ContentHash
+decodeContentHashMapped = mapLeftText . parseEither parseContentHashMapped
+
+encodeContentHashShape :: ShapeContentHash.ContentHashShape -> Value
+encodeContentHashShape = encodeBase16Bytes
+
+parseContentHashShape :: Value -> Parser ShapeContentHash.ContentHashShape
+parseContentHashShape = parseBase16Bytes
+
+encodeImportantDaysMapped :: ImportantDays -> Value
+encodeImportantDaysMapped = encodeImportantDaysShape . bindingToShape Bindings.importantDaysBinding
+
+parseImportantDaysMapped :: Value -> Parser ImportantDays
+parseImportantDaysMapped value = bindingFromShape Bindings.importantDaysBinding <$> parseImportantDaysShape value
+
+decodeImportantDaysMapped :: Value -> Either Text ImportantDays
+decodeImportantDaysMapped = mapLeftText . parseEither parseImportantDaysMapped
+
+encodeImportantDaysShape :: ShapeImportantDays.ImportantDaysShape -> Value
+encodeImportantDaysShape value = toJSON (map (\item0 -> encodeCalendarDay (item0)) (value))
+
+parseImportantDaysShape :: Value -> Parser ShapeImportantDays.ImportantDaysShape
+parseImportantDaysShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseCalendarDay) item0 <?> Index index0) (zip [0..] items0)
+
+encodeMaybeContentHashMapped :: MaybeContentHash -> Value
+encodeMaybeContentHashMapped = encodeMaybeContentHashShape . bindingToShape Bindings.maybeContentHashBinding
+
+parseMaybeContentHashMapped :: Value -> Parser MaybeContentHash
+parseMaybeContentHashMapped value = bindingFromShape Bindings.maybeContentHashBinding <$> parseMaybeContentHashShape value
+
+decodeMaybeContentHashMapped :: Value -> Either Text MaybeContentHash
+decodeMaybeContentHashMapped = mapLeftText . parseEither parseMaybeContentHashMapped
+
+encodeMaybeContentHashShape :: ShapeMaybeContentHash.MaybeContentHashShape -> Value
+encodeMaybeContentHashShape value = maybe Null (\item0 -> encodeContentHashShape (item0)) (value)
+
+parseMaybeContentHashShape :: Value -> Parser ShapeMaybeContentHash.MaybeContentHashShape
+parseMaybeContentHashShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0
+
+encodeMaybeLabelMapped :: MaybeLabel -> Value
+encodeMaybeLabelMapped = encodeMaybeLabelShape . bindingToShape Bindings.maybeLabelBinding
+
+parseMaybeLabelMapped :: Value -> Parser MaybeLabel
+parseMaybeLabelMapped value = bindingFromShape Bindings.maybeLabelBinding <$> parseMaybeLabelShape value
+
+decodeMaybeLabelMapped :: Value -> Either Text MaybeLabel
+decodeMaybeLabelMapped = mapLeftText . parseEither parseMaybeLabelMapped
+
+encodeMaybeLabelShape :: ShapeMaybeLabel.MaybeLabelShape -> Value
+encodeMaybeLabelShape value = maybe Null (\item0 -> toJSON (item0)) (value)
+
+parseMaybeLabelShape :: Value -> Parser ShapeMaybeLabel.MaybeLabelShape
+parseMaybeLabelShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseJSON) other0
+
+encodeReplayEnvelopeMapped :: ReplayEnvelope -> Value
+encodeReplayEnvelopeMapped = encodeReplayEnvelopeShape . bindingToShape Bindings.replayEnvelopeBinding
+
+parseReplayEnvelopeMapped :: Value -> Parser ReplayEnvelope
+parseReplayEnvelopeMapped value = bindingFromShape Bindings.replayEnvelopeBinding <$> parseReplayEnvelopeShape value
+
+decodeReplayEnvelopeMapped :: Value -> Either Text ReplayEnvelope
+decodeReplayEnvelopeMapped = mapLeftText . parseEither parseReplayEnvelopeMapped
+
+encodeReplayEnvelopeShape :: ShapeReplayEnvelope.ReplayEnvelopeShape -> Value
+encodeReplayEnvelopeShape shape =
+  object
+      [ "label" .= encodeMaybeLabelShape (shape.label)
+      , "days" .= encodeImportantDaysShape (shape.days)
+      , "labels" .= encodeTextLabelsShape (shape.labels)
+      , "contentHash" .= encodeMaybeContentHashShape (shape.contentHash)
+      , "primary" .= encodeRetainedIdLeaf shape.primary
+      , "identities" .= Object (KeyMap.fromList [(Key.fromText (renderRetainedIdLeafKey key0), toJSON (item0)) | (key0, item0) <- Map.toList (shape.identities)])
+      , "optionalLabels" .= maybe Null (\item0 -> encodeTextSet (item0)) (shape.optionalLabels)
+      ]
+
+parseReplayEnvelopeShape :: Value -> Parser ShapeReplayEnvelope.ReplayEnvelopeShape
+parseReplayEnvelopeShape = withObject "ReplayEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "ReplayEnvelope" ["label", "days", "labels", "contentHash", "primary", "identities", "optionalLabels"] objectValue
+  ShapeReplayEnvelope.ReplayEnvelope
+    <$> explicitParseField (parseMaybeLabelShape) objectValue "label"
+    <*> explicitParseField (parseImportantDaysShape) objectValue "days"
+    <*> explicitParseField (parseTextLabelsShape) objectValue "labels"
+    <*> explicitParseField (parseMaybeContentHashShape) objectValue "contentHash"
+    <*> explicitParseField (parseRetainedIdLeaf) objectValue "primary"
+    <*> explicitParseField (\value0 -> withObject "Map[RetainedId]" (\object0 -> Map.fromList <$> traverse (\(rawKey0, item0) -> do key0 <- parseRetainedIdLeafKey (Key.toText rawKey0) <?> Key rawKey0; parsedItem0 <- (parseJSON) item0 <?> Key rawKey0; pure (key0, parsedItem0)) (KeyMap.toList object0)) value0) objectValue "identities"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0) objectValue "optionalLabels"
+
+encodeTextLabelsMapped :: TextLabels -> Value
+encodeTextLabelsMapped = encodeTextLabelsShape . bindingToShape Bindings.textLabelsBinding
+
+parseTextLabelsMapped :: Value -> Parser TextLabels
+parseTextLabelsMapped value = bindingFromShape Bindings.textLabelsBinding <$> parseTextLabelsShape value
+
+decodeTextLabelsMapped :: Value -> Either Text TextLabels
+decodeTextLabelsMapped = mapLeftText . parseEither parseTextLabelsMapped
+
+encodeTextLabelsShape :: ShapeTextLabels.TextLabelsShape -> Value
+encodeTextLabelsShape value = encodeTextSet (value)
+
+parseTextLabelsShape :: Value -> Parser ShapeTextLabels.TextLabelsShape
+parseTextLabelsShape = parseTextSet
+
+replayLedgerEventTypes :: NonEmpty EventType
+replayLedgerEventTypes = EventType "MappingRecorded" :| [EventType "MappingAudited", EventType "LegacyMappingImported"]
+
+replayLedgerCodec :: Codec ReplayLedgerEvent
+replayLedgerCodec =
+  Codec
+    { eventTypes = replayLedgerEventTypes
+    , eventType = \case
+        MappingRecorded{} -> EventType "MappingRecorded"
+        MappingAudited{} -> EventType "MappingAudited"
+        LegacyMappingImported{} -> EventType "LegacyMappingImported"
+    , schemaVersion = 1
+    , encode = encodeReplayLedgerEvent
+    , decode = parseReplayLedgerEvent
+    , upcasters = []
+    }
+
+encodeReplayLedgerEvent :: ReplayLedgerEvent -> Value
+encodeReplayLedgerEvent = \case
+  MappingRecorded payload ->
+    object
+      [ "kind" .= ("MappingRecorded" :: Text)
+      , "retainedId" .= retainedIdText payload.retainedId
+      , "envelope" .= encodeReplayEnvelopeMapped payload.envelope
+      ]
+  MappingAudited payload ->
+    object
+      [ "kind" .= ("MappingAudited" :: Text)
+      , "retainedId" .= retainedIdText payload.retainedId
+      , "envelope" .= encodeReplayEnvelopeMapped payload.envelope
+      ]
+  LegacyMappingImported payload ->
+    object
+      [ "kind" .= ("LegacyMappingImported" :: Text)
+      , "retainedId" .= retainedIdText payload.retainedId
+      , "envelope" .= encodeReplayEnvelopeMapped payload.envelope
+      ]
+
+parseReplayLedgerEvent :: EventType -> Value -> Either Text ReplayLedgerEvent
+parseReplayLedgerEvent (EventType tag) = mapLeftText . parseEither (withObject "ReplayLedgerEvent" go)
+  where
+    go o = do
+      case tag of
+        "MappingRecorded" ->
+          MappingRecorded
+            <$> ( MappingRecordedData
+                    <$> (unsafeRetainedIdFromLegacyText <$> o .: "retainedId")
+                    <*> explicitParseField parseReplayEnvelopeMapped o "envelope"
+                )
+        "MappingAudited" ->
+          MappingAudited
+            <$> ( MappingAuditedData
+                    <$> (unsafeRetainedIdFromLegacyText <$> o .: "retainedId")
+                    <*> explicitParseField parseReplayEnvelopeMapped o "envelope"
+                )
+        "LegacyMappingImported" ->
+          LegacyMappingImported
+            <$> ( LegacyMappingImportedData
+                    <$> (unsafeRetainedIdFromLegacyText <$> o .: "retainedId")
+                    <*> explicitParseField parseReplayEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes replayLedgerEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.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 Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId)
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ReplayEnvelope)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data ReplayLedgerVertex = ReplayLedgerEmpty | ReplayLedgerRecorded
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+  deriving anyclass (ToJSON, FromJSON)
+instance CanonicalStateShape ReplayLedgerVertex
+instance CanonicalTypeName ReplayLedgerVertex
+
+data RecordData = RecordData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ImportLegacyData = ImportLegacyData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ReplayLedgerCommand = Record !RecordData
+  | ImportLegacy !ImportLegacyData
+  deriving stock (Generic, Eq, Show)
+
+data MappingRecordedData = MappingRecordedData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data MappingAuditedData = MappingAuditedData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LegacyMappingImportedData = LegacyMappingImportedData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ReplayLedgerEvent = MappingRecorded !MappingRecordedData
+  | MappingAudited !MappingAuditedData
+  | LegacyMappingImported !LegacyMappingImportedData
+  deriving stock (Generic, Eq, Show)
+
+type ReplayLedgerRegs =
+  '[ '("current", ReplayEnvelope)
+   , '("currentId", RetainedId)
+   ]
+
+initialReplayLedgerRegs :: RegFile ReplayLedgerRegs
+initialReplayLedgerRegs =
+  RCons (Proxy @"current") Bindings.initialReplayEnvelope $
+  RCons (Proxy @"currentId") (case parseRetainedId "retained_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") RNil
+
+$(deriveAggregateCtorsAll ''ReplayLedgerCommand ''ReplayLedgerRegs)
+
+
+
+$(deriveWireCtorsAll ''ReplayLedgerEvent)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs
@@ -0,0 +1,63 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.EventStream
+  ( replayLedgerCategory
+  , replayLedgerCommandCategory
+  , replayLedgerEventStream
+  , replayLedgerEventStreamDef
+  , ReplayLedgerEventStream
+  , ReplayLedgerEventStreamDef
+  , replayLedgerSnapshotFixture
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Generated.CheckedMappingReplay.ReplayLedger.Codec (replayLedgerCodec)
+import Generated.CheckedMappingReplay.ReplayLedger.Transducer (replayLedgerFoldFingerprint, replayLedgerTransducer)
+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.
+replayLedgerCategory :: Stream.StreamCategory ReplayLedgerEventStreamDef
+replayLedgerCategory = Stream.categoryUnsafe "replayLedger"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+replayLedgerCommandCategory :: Stream.StreamCategory ReplayLedgerCommand
+replayLedgerCommandCategory = Stream.categoryUnsafe "replayLedger"
+
+type ReplayLedgerEventStreamDef =
+  EventStream (HsPred ReplayLedgerRegs ReplayLedgerCommand) ReplayLedgerRegs ReplayLedgerVertex ReplayLedgerCommand ReplayLedgerEvent
+
+type ReplayLedgerEventStream =
+  ValidatedEventStream (HsPred ReplayLedgerRegs ReplayLedgerCommand) ReplayLedgerRegs ReplayLedgerVertex ReplayLedgerCommand ReplayLedgerEvent
+
+replayLedgerEventStreamDef :: ReplayLedgerEventStreamDef
+replayLedgerEventStreamDef =
+  EventStream
+    { transducer = replayLedgerTransducer,
+      initialState = ReplayLedgerEmpty,
+      initialRegisters = initialReplayLedgerRegs,
+      eventCodec = replayLedgerCodec,
+      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 replayLedgerFoldFingerprint (defaultStateCodec 1))
+    }
+
+replayLedgerSnapshotFixture :: (Int, Text)
+replayLedgerSnapshotFixture = (1, "checked-mapping-replay-v1")
+
+replayLedgerEventStream :: ReplayLedgerEventStream
+replayLedgerEventStream =
+  mkEventStreamOrThrow "ReplayLedger" replayLedgerEventStreamDef
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.Harness (harnessAssertions) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Generated.CheckedMappingReplay.ReplayLedger.Codec (encodeReplayLedgerEvent, parseReplayLedgerEvent, replayLedgerCodec, encodeReplayEnvelopeMapped, decodeReplayEnvelopeMapped)
+import Generated.CheckedMappingReplay.ReplayLedger.Transducer (replayLedgerTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+import Keiro.Codec (eventType)
+import Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId)
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as AesonKey
+import Data.Aeson.KeyMap qualified as AesonKeyMap
+import Data.Either (isLeft, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.CheckedMappingReplay.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 replayLedgerTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: MappingRecorded", roundTrips sampleEventMappingRecorded)
+  , ("golden round-trip: MappingAudited", roundTrips sampleEventMappingAudited)
+  , ("golden round-trip: LegacyMappingImported", roundTrips sampleEventLegacyMappingImported)
+  , ("accepts Record from ReplayLedgerEmpty", acceptRecord)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayRecord
+
+roundTrips :: ReplayLedgerEvent -> Bool
+roundTrips e = parseReplayLedgerEvent (eventType replayLedgerCodec e) (encodeReplayLedgerEvent e) == Right e
+
+sampleRetainedId :: RetainedId
+sampleRetainedId =
+  case parseRetainedId "retained_01h455vb4pex5vsknk084sn02q" of
+    Right parsed -> parsed
+    Left problem -> error (show problem)
+
+sampleEventMappingRecorded :: ReplayLedgerEvent
+sampleEventMappingRecorded = MappingRecorded (MappingRecordedData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))
+
+sampleEventMappingAudited :: ReplayLedgerEvent
+sampleEventMappingAudited = MappingAudited (MappingAuditedData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))
+
+sampleEventLegacyMappingImported :: ReplayLedgerEvent
+sampleEventLegacyMappingImported = LegacyMappingImported (LegacyMappingImportedData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))
+
+acceptRecord :: Bool
+acceptRecord =
+  case step replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) (Record (RecordData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == ReplayLedgerRecorded
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayRecord :: [(String, Bool)]
+forwardReplayRecord =
+  case step replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) (Record (RecordData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseReplayLedgerEvent (eventType replayLedgerCodec event) (encodeReplayLedgerEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              , (prefix <> "register currentId", (replayRegs ! #currentId) == (forwardRegs ! #currentId))
+              ]
+  where
+    prefix = "forward/replay equality: Record from ReplayLedgerEmpty -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ mappingRecordedEnvelopeAssertions
+    , mappingAuditedEnvelopeAssertions
+    , legacyMappingImportedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+mappingRecordedEnvelopeAssertions :: [(String, Bool)]
+mappingRecordedEnvelopeAssertions =
+  [ ("mapped codec round-trip: MappingRecorded/envelope/" <> T.unpack label, roundTrips (MappingRecorded (MappingRecordedData sampleRetainedId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)
+  ]
+
+mappingAuditedEnvelopeAssertions :: [(String, Bool)]
+mappingAuditedEnvelopeAssertions =
+  [ ("mapped codec round-trip: MappingAudited/envelope/" <> T.unpack label, roundTrips (MappingAudited (MappingAuditedData sampleRetainedId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)
+  ]
+
+legacyMappingImportedEnvelopeAssertions :: [(String, Bool)]
+legacyMappingImportedEnvelopeAssertions =
+  [ ("mapped codec round-trip: LegacyMappingImported/envelope/" <> T.unpack label, roundTrips (LegacyMappingImported (LegacyMappingImportedData sampleRetainedId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.checked-mapping-replay.ReplayEnvelope.v1/optionalLabels", case decodeReplayEnvelopeMapped (deleteObjectField "optionalLabels" (encodeReplayEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalLabels" (encodeReplayEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.checked-mapping-replay.ReplayEnvelope.v1/optionalLabels", isRight (decodeReplayEnvelopeMapped (insertObjectField "optionalLabels" Aeson.Null (encodeReplayEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.checked-mapping-replay.ReplayEnvelope.v1", all (\(_, value) -> isLeft (decodeReplayEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeReplayEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.
+module Generated.CheckedMappingReplay.ReplayLedger.Transducer
+  ( replayLedgerTransducer
+  , replayLedgerFoldFingerprint
+  , BehaviorOwnership (..)
+  , replayLedgerPredicateVerifications
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Data.Text (Text)
+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 ((=:))
+
+replayLedgerTransducer
+  :: SymTransducer
+       (HsPred ReplayLedgerRegs ReplayLedgerCommand)
+       ReplayLedgerRegs
+       ReplayLedgerVertex
+       ReplayLedgerCommand
+       ReplayLedgerEvent
+replayLedgerTransducer =
+  B.buildTransducer ReplayLedgerEmpty initialReplayLedgerRegs isTerminal do
+    B.from ReplayLedgerEmpty do
+      B.onCmd inCtorRecord $ \d -> B.do
+        B.slot @"current" =: d.envelope
+        B.slot @"currentId" =: d.retainedId
+        B.emit wireMappingRecorded (MappingRecordedTermFields
+          { retainedId = d.retainedId
+          , envelope = d.envelope
+          })
+        B.emit wireMappingAudited (MappingAuditedTermFields
+          { retainedId = d.retainedId
+          , envelope = d.envelope
+          })
+        B.goto ReplayLedgerRecorded
+      B.onCmd inCtorImportLegacy $ \d -> B.do
+        B.replayOnly
+        B.slot @"current" =: d.envelope
+        B.slot @"currentId" =: d.retainedId
+        B.emit wireLegacyMappingImported (LegacyMappingImportedTermFields
+          { retainedId = d.retainedId
+          , envelope = d.envelope
+          })
+        B.goto ReplayLedgerRecorded
+ where
+  isTerminal = \case
+    ReplayLedgerRecorded -> True
+    _ -> False
+
+replayLedgerFoldFingerprint :: Text
+replayLedgerFoldFingerprint = "e7747e791715d691f98690d59c480ef4"
+
+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.
+replayLedgerPredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+replayLedgerPredicateVerifications = sequence
+  [ verifyTransition "transition1EmptyRecord" GeneratedOwned ReplayLedgerEmpty 0
+  , verifyTransition "transition2EmptyImportLegacy" GeneratedOwned ReplayLedgerEmpty 1
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut replayLedgerTransducer 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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs
@@ -0,0 +1,10 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.
+module Generated.CheckedMappingReplay.ReplayLookup.QueryContract
+  ( ReplayLookupQueryInput
+  , ReplayLookupQueryResult
+  ) where
+
+import Conformance.CheckedMappingReplay.Domain (ReplayEnvelope)
+
+type ReplayLookupQueryInput = ReplayEnvelope
+type ReplayLookupQueryResult = [ReplayEnvelope]
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs
@@ -0,0 +1,28 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.
+module Generated.CheckedMappingReplay.ReplayLookup.ReadModel
+  ( replayLookupReadModel
+  , replayLookupQualifiedTable
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable (replayLookupQualifiedTable)
+import Generated.CheckedMappingReplay.ReplayLookup.QueryContract (ReplayLookupQueryInput, ReplayLookupQueryResult)
+import CheckedMappingReplay.ReplayLookup.ReadModelHoles (replayLookupQuery)
+import Keiro.ReadModel (QueryCursorAuthority (..), ReadModel, ReadModelBlueprint (..), HeadScope (..), headWaitingReadModel)
+
+replayLookupReadModel :: ReadModel ReplayLookupQueryInput ReplayLookupQueryResult
+replayLookupReadModel =
+  case headWaitingReadModel EntireVisibleLog replayLookupReadModelBlueprint of
+    Left definitionError -> error ("keiro-dsl generated an invalid waiting read model: " <> show definitionError)
+    Right model -> model
+
+replayLookupReadModelBlueprint :: ReadModelBlueprint ReplayLookupQueryInput ReplayLookupQueryResult
+replayLookupReadModelBlueprint =
+  ReadModelBlueprint
+    { name = "checked-mapping-replay-replay-lookup"
+    , tableName = "checked_mapping_replay"
+    , schema = "public"
+    , version = 1
+    , shapeHash = "fnv1a:3c07a19c552c3547"
+    , cursorAuthority = DurableQueryCursor "checked-mapping-replay-writer"
+    , query = replayLookupQuery
+    }
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs
@@ -0,0 +1,57 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text qualified as T
+import Data.List.NonEmpty qualified as NE
+import Generated.CheckedMappingReplay.ProjectionCatalog qualified as ProjectionCatalog
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel (ReadModel (..), readModelCursorAuthority, readModelDefaultFreshness)
+
+-- | (fact, expected from notation, actual generated runtime value).
+readModelFacts :: [(String, String, String)]
+readModelFacts =
+  [ ("registryName", "checked-mapping-replay-replay-lookup", T.unpack replayLookupReadModel.name)
+  , ("shapeHash", "fnv1a:3c07a19c552c3547", T.unpack replayLookupReadModel.shapeHash)
+  , ("freshness", "WaitForHead EntireVisibleLog", show (readModelDefaultFreshness replayLookupReadModel))
+  , ("cursorAuthority", "DurableQueryCursor \"checked-mapping-replay-writer\"", show (readModelCursorAuthority replayLookupReadModel))
+  ]
+    <> catalogFactsAgainst ProjectionCatalog.projectionCatalogRegistrations ProjectionCatalog.projectionCatalogAsyncRegistrations ProjectionCatalog.projectionCatalogQuerySupplies
+
+catalogFactsAgainst :: [Catalog.CatalogRegistration] -> [Catalog.AsyncProjectionRegistration] -> [Catalog.ResolvedQuerySupply] -> [(String, String, String)]
+catalogFactsAgainst registrations asyncRegistrations supplies =
+  [ ("catalogRegistration", "checked-mapping-replay-replay-lookup|1|fnv1a:3c07a19c552c3547|replay_rebuild", renderRegistration [entry | entry <- registrations, Catalog.queryModelIdText entry.queryModelId == "replay_lookup"])
+  , ("querySupply", "replay_writer|replay_rebuild|replay_table", renderSupply [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "replay_lookup"])
+  , ("projectionDelivery", "subscription", renderDelivery [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "replay_lookup"])
+  , ("asyncRegistration:replay_writer", "checked-mapping-replay-writer|checked-mapping-replay-writer-v1", renderAsync [entry | entry <- asyncRegistrations, Catalog.projectionIdText entry.projectionId == "replay_writer"])
+  ]
+
+renderRegistration :: [Catalog.CatalogRegistration] -> String
+renderRegistration [entry] = T.unpack entry.registryName <> "|" <> show entry.version <> "|" <> T.unpack entry.shapeHash <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.rebuildGroupId)
+renderRegistration _ = "missing"
+
+renderSupply :: [Catalog.ResolvedQuerySupply] -> String
+renderSupply [entry] = T.unpack (Catalog.projectionIdText entry.resolvedProjectionId) <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.resolvedRebuildGroupId) <> "|" <> T.unpack (T.intercalate "," (map Catalog.targetIdText (NE.toList entry.resolvedObservedTargets)))
+renderSupply _ = "missing"
+
+renderDelivery :: [Catalog.ResolvedQuerySupply] -> String
+renderDelivery [entry] = T.unpack (T.intercalate "," (map renderCapability (NE.toList entry.resolvedHandlerCapabilities)))
+renderDelivery _ = "missing"
+
+renderCapability :: Catalog.ProjectionHandlerCapability -> T.Text
+renderCapability Catalog.InlineCapability {} = "inline"
+renderCapability Catalog.SubscriptionCapability {} = "subscription"
+
+renderAsync :: [Catalog.AsyncProjectionRegistration] -> String
+renderAsync [entry] = T.unpack entry.subscriptionName <> "|" <> T.unpack entry.dedupName
+renderAsync _ = "missing"
+
+readModelFactResults :: [(String, Bool)]
+readModelFactResults =
+  [(fact, expected == actual) | (fact, expected, actual) <- readModelFacts]
+
+runReadModelFacts :: IO Bool
+runReadModelFacts = do
+  let failures = [(fact, expected, actual) | (fact, expected, actual) <- readModelFacts, expected /= actual]
+  mapM_ (\(fact, expected, actual) -> putStrLn ("FAIL  " <> fact <> " expected=" <> show expected <> " actual=" <> show actual)) failures
+  pure (null failures)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.
+module Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable (replayLookupQualifiedTable) where
+
+import Data.Text (Text)
+import Keiro.Connection (qualifyTable)
+
+-- The fully-qualified, double-quoted data-table reference.
+replayLookupQualifiedTable :: Text
+replayLookupQualifiedTable = qualifyTable "public" "checked_mapping_replay"
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE DeriveAnyClass #-}
+-- @generated by keiro-dsl 0.18.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)
+import GHC.Generics (Generic)
+import Generated.CheckedMappingReplay.Nominals qualified as N
+import Conformance.CheckedMappingReplay.Domain (ReplayEnvelope)
+
+data ReplayReactionInput
+  = ReplayRequested
+      { retainedId :: !N.RetainedId
+      , envelope :: !ReplayEnvelope
+      }
+  deriving stock (Generic, Eq, Show)
+  deriving anyclass (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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs
@@ -0,0 +1,78 @@
+{-# OPTIONS_GHC -Wno-missing-signatures #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from process reaction ReplayReaction; do not edit.
+module Generated.CheckedMappingReplay.ReplayReaction.Process
+  ( ReplayReactionInput (..)
+  , replayReactionProcessName
+  , replayReactionCategory
+  , replayReactionProcessWorkerOptions
+  , replayReactionReactionVersion
+  , replayReactionReactionFingerprint
+  , replayReactionReact
+  , replayReactionProcessManager
+  , replayReactionRunProcessWorker
+  ) where
+
+import Data.Text (Text)
+import Numeric.Natural (Natural)
+import Generated.CheckedMappingReplay.ReplayReaction.Input (ReplayReactionInput (..))
+import CheckedMappingReplay.ReplayReaction.ProcessHoles (decodeReplayReactionInput)
+import Generated.CheckedMappingReplay.ReplayLedger.Domain qualified as Saga
+import Generated.CheckedMappingReplay.ReplayLedger.EventStream (replayLedgerEventStream, ReplayLedgerEventStreamDef)
+import Generated.CheckedMappingReplay.ReplayTarget.Domain qualified as Target
+import Generated.CheckedMappingReplay.ReplayTarget.EventStream (replayTargetCommandCategory, replayTargetEventStream)
+import Generated.CheckedMappingReplay.Nominals qualified as N
+import Keiro.Command (DomainCommandHandler (..), SilentDomainDecision (..))
+import Keiro.ProcessManager (PMCommand (..))
+import Keiro.ProcessManager.Reaction qualified as Reaction
+import Keiro.Stream qualified as Stream
+import Keiro.ProcessManager (PoisonPolicy (..), RejectedCommandPolicy (..), WorkerOptions (..))
+import Shibuya.Core.Ack (RetryDelay (..))
+
+replayReactionProcessName :: Text
+replayReactionProcessName = "checked-mapping-replay-reaction"
+
+replayReactionCategory :: Stream.StreamCategory ReplayLedgerEventStreamDef
+replayReactionCategory = Stream.categoryUnsafe "checkedMappingReplaySaga"
+
+replayReactionProcessWorkerOptions :: WorkerOptions es msg
+replayReactionProcessWorkerOptions =
+  WorkerOptions
+    { poisonPolicy = PoisonHalt,
+      rejectedCommandPolicy = RejectedHalt,
+      transientRetryDelay = RetryDelay 5, -- matches defaultWorkerOptions; runtime tuning
+      metrics = Nothing -- runtime configuration; install at call site
+    }
+
+replayReactionReactionVersion :: Natural
+replayReactionReactionVersion = 1
+
+replayReactionReactionFingerprint :: Text
+replayReactionReactionFingerprint = "cc73d755be55b8a2d237ac02752ad8d425a50c5fb9f7c3bab8b5f5ada239b1c8"
+
+replayReactionCorrelate :: ReplayReactionInput -> Text
+replayReactionCorrelate input = case input of
+  ReplayRequested { retainedId } -> (N.retainedIdText retainedId)
+
+replayReactionReact :: ReplayReactionInput -> Reaction.ReactionPlan Saga.ReplayLedgerCommand Target.ReplayTargetCommand
+replayReactionReact input = case input of
+  ReplayRequested { retainedId, envelope }
+    -> Reaction.AdvanceReaction { command = Saga.Record (Saga.RecordData { Saga.retainedId = retainedId, Saga.envelope = envelope }), followUps = [Reaction.FollowDispatch (PMCommand (Stream.entityStream replayTargetCommandCategory (N.retainedIdText retainedId)) (Target.Store (Target.StoreData { Target.retainedId = retainedId, Target.envelope = envelope })))], onAccepted = [] }
+
+replayReactionProcessManager =
+  Reaction.ReactiveProcessManager
+    { name = replayReactionProcessName
+    , correlate = replayReactionCorrelate
+    , sagaHandler = DomainCommandHandler { eventStream = replayLedgerEventStream, classifySilent = \_ -> SilentNoOp () }
+    , streamFor = Stream.entityStream replayReactionCategory
+    , targetEventStream = replayTargetEventStream
+    , targetProjections = const []
+    , react = replayReactionReact
+    }
+
+replayReactionRunProcessWorker options adapter =
+  Reaction.runReactiveProcessManagerWorkerWith
+    replayReactionProcessWorkerOptions
+    options
+    replayReactionProcessManager
+    adapter
+    (\event -> case decodeReplayReactionInput event of Nothing -> Nothing; Just input -> Just (event, input))
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs
@@ -0,0 +1,16 @@
+-- @generated by keiro-dsl 0.18.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,
+-- lowered to plain values so a driver can assert them against a committed
+-- expectation. The driver's expectation is hand-written (not generated), so a
+-- spec change that alters a decision diverges from it and turns a specific
+-- assertion red — the spec->behaviour pin. (Live-runtime behavioural
+-- conformance of the filled ProcessManager is the M5 step.)
+processHarnessValues :: [(String, String)]
+processHarnessValues =
+  [ ("reactionOwnership", "generated-declarative")
+  , ("reactionVersion", "1")
+  , ("reactionFingerprint", "cc73d755be55b8a2d237ac02752ad8d425a50c5fb9f7c3bab8b5f5ada239b1c8")
+  , ("reaction.ReplayRequested.0", "guard=always;advance=Record;followUps=dispatch:ReplayTarget.Store;accepted=")
+  ]
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs
@@ -0,0 +1,338 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.Codec (encodeReplayTargetEvent, parseReplayTargetEvent, replayTargetCodec)
+import Generated.CheckedMappingReplay.ReplayTarget.Domain
+import Generated.CheckedMappingReplay.ReplayTarget.Transducer (replayTargetTransducer)
+import Generated.CheckedMappingReplay.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 :: !ReplayTargetVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef ReplayTargetVertex))
+  , target :: !(Maybe ReplayTargetVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty ReplayTargetEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [ReplayTargetEvent]
+      , command :: ReplayTargetCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [ReplayTargetEvent]
+      , observedChunk :: [ReplayTargetEvent]
+      }
+  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 =
+  [ -- ReplayTargetReady x Store: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-756d75346570c343"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = ReplayTargetReady
+      , commandName = "Store"
+      , expectedEdge = (Just (K.EdgeRef ReplayTargetReady 0))
+      , target = Just ReplayTargetReady
+      , eventKinds = ["Stored"]
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: ReplayTarget"
+  , "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 -> [ReplayTargetEvent] -> ReplayTargetCommand -> 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 -> (ReplayTargetVertex, K.RegFile ReplayTargetRegs) -> ReplayTargetCommand -> 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 replayTargetTransducer 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 -> (ReplayTargetVertex, K.RegFile ReplayTargetRegs) -> ReplayTargetCommand -> 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 replayTargetTransducer 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 replayTargetTransducer 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 replayTargetTransducer 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 ReplayTargetRegs ReplayTargetVertex ReplayTargetEvent -> 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 -> [ReplayTargetEvent] -> [ReplayTargetEvent] -> 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 replayTargetTransducer (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 ReplayTargetVertex] -> 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 -> [ReplayTargetEvent] -> Either BehaviorFailure (K.ReplaySuccess ReplayTargetRegs ReplayTargetVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither replayTargetTransducer (ReplayTargetReady, initialReplayTargetRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [ReplayTargetEvent] -> Either Text [ReplayTargetEvent]
+decodeEvents = traverse (\event -> parseReplayTargetEvent (Codec.eventType replayTargetCodec event) (encodeReplayTargetEvent event))
+
+commandKind :: ReplayTargetCommand -> Text
+commandKind command = case command of
+  Store _ -> "Store"
+
+eventKind :: ReplayTargetEvent -> Text
+eventKind event = case Codec.eventType replayTargetCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile ReplayTargetRegs -> K.RegFile ReplayTargetRegs -> Bool
+regsEqual left right = (left K.! #latest) == (right K.! #latest)
+
+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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs
@@ -0,0 +1,218 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.Codec (
+    replayTargetCodec,
+    parseReplayTargetEvent,
+    encodeReplayTargetEvent,
+    encodeContentHashMapped,
+    decodeContentHashMapped,
+    encodeImportantDaysMapped,
+    decodeImportantDaysMapped,
+    encodeMaybeContentHashMapped,
+    decodeMaybeContentHashMapped,
+    encodeMaybeLabelMapped,
+    decodeMaybeLabelMapped,
+    encodeReplayEnvelopeMapped,
+    decodeReplayEnvelopeMapped,
+    encodeTextLabelsMapped,
+    decodeTextLabelsMapped,
+) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.Domain
+import Generated.CheckedMappingReplay.Nominals (retainedIdText)
+import Generated.CheckedMappingReplay.Nominals.Internal (unsafeRetainedIdFromLegacyText)
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.:), (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.CalendarDay (encodeCalendarDay, parseCalendarDay)
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)
+import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (encodeRetainedIdLeaf, parseRetainedIdLeaf)
+import Generated.CheckedMappingReplay.Structural.NominalLeaves (parseRetainedIdLeafKey, renderRetainedIdLeafKey)
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ContentHash, ImportantDays, MaybeContentHash, MaybeLabel, ReplayEnvelope, TextLabels)
+import Generated.CheckedMappingReplay.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.ImportantDays qualified as ShapeImportantDays
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel qualified as ShapeMaybeLabel
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+import Generated.CheckedMappingReplay.Structural.Shape.TextLabels qualified as ShapeTextLabels
+
+
+
+encodeContentHashMapped :: ContentHash -> Value
+encodeContentHashMapped = encodeContentHashShape . bindingToShape Bindings.contentHashBinding
+
+parseContentHashMapped :: Value -> Parser ContentHash
+parseContentHashMapped value = bindingFromShape Bindings.contentHashBinding <$> parseContentHashShape value
+
+decodeContentHashMapped :: Value -> Either Text ContentHash
+decodeContentHashMapped = mapLeftText . parseEither parseContentHashMapped
+
+encodeContentHashShape :: ShapeContentHash.ContentHashShape -> Value
+encodeContentHashShape = encodeBase16Bytes
+
+parseContentHashShape :: Value -> Parser ShapeContentHash.ContentHashShape
+parseContentHashShape = parseBase16Bytes
+
+encodeImportantDaysMapped :: ImportantDays -> Value
+encodeImportantDaysMapped = encodeImportantDaysShape . bindingToShape Bindings.importantDaysBinding
+
+parseImportantDaysMapped :: Value -> Parser ImportantDays
+parseImportantDaysMapped value = bindingFromShape Bindings.importantDaysBinding <$> parseImportantDaysShape value
+
+decodeImportantDaysMapped :: Value -> Either Text ImportantDays
+decodeImportantDaysMapped = mapLeftText . parseEither parseImportantDaysMapped
+
+encodeImportantDaysShape :: ShapeImportantDays.ImportantDaysShape -> Value
+encodeImportantDaysShape value = toJSON (map (\item0 -> encodeCalendarDay (item0)) (value))
+
+parseImportantDaysShape :: Value -> Parser ShapeImportantDays.ImportantDaysShape
+parseImportantDaysShape = \value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseCalendarDay) item0 <?> Index index0) (zip [0..] items0)
+
+encodeMaybeContentHashMapped :: MaybeContentHash -> Value
+encodeMaybeContentHashMapped = encodeMaybeContentHashShape . bindingToShape Bindings.maybeContentHashBinding
+
+parseMaybeContentHashMapped :: Value -> Parser MaybeContentHash
+parseMaybeContentHashMapped value = bindingFromShape Bindings.maybeContentHashBinding <$> parseMaybeContentHashShape value
+
+decodeMaybeContentHashMapped :: Value -> Either Text MaybeContentHash
+decodeMaybeContentHashMapped = mapLeftText . parseEither parseMaybeContentHashMapped
+
+encodeMaybeContentHashShape :: ShapeMaybeContentHash.MaybeContentHashShape -> Value
+encodeMaybeContentHashShape value = maybe Null (\item0 -> encodeContentHashShape (item0)) (value)
+
+parseMaybeContentHashShape :: Value -> Parser ShapeMaybeContentHash.MaybeContentHashShape
+parseMaybeContentHashShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0
+
+encodeMaybeLabelMapped :: MaybeLabel -> Value
+encodeMaybeLabelMapped = encodeMaybeLabelShape . bindingToShape Bindings.maybeLabelBinding
+
+parseMaybeLabelMapped :: Value -> Parser MaybeLabel
+parseMaybeLabelMapped value = bindingFromShape Bindings.maybeLabelBinding <$> parseMaybeLabelShape value
+
+decodeMaybeLabelMapped :: Value -> Either Text MaybeLabel
+decodeMaybeLabelMapped = mapLeftText . parseEither parseMaybeLabelMapped
+
+encodeMaybeLabelShape :: ShapeMaybeLabel.MaybeLabelShape -> Value
+encodeMaybeLabelShape value = maybe Null (\item0 -> toJSON (item0)) (value)
+
+parseMaybeLabelShape :: Value -> Parser ShapeMaybeLabel.MaybeLabelShape
+parseMaybeLabelShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseJSON) other0
+
+encodeReplayEnvelopeMapped :: ReplayEnvelope -> Value
+encodeReplayEnvelopeMapped = encodeReplayEnvelopeShape . bindingToShape Bindings.replayEnvelopeBinding
+
+parseReplayEnvelopeMapped :: Value -> Parser ReplayEnvelope
+parseReplayEnvelopeMapped value = bindingFromShape Bindings.replayEnvelopeBinding <$> parseReplayEnvelopeShape value
+
+decodeReplayEnvelopeMapped :: Value -> Either Text ReplayEnvelope
+decodeReplayEnvelopeMapped = mapLeftText . parseEither parseReplayEnvelopeMapped
+
+encodeReplayEnvelopeShape :: ShapeReplayEnvelope.ReplayEnvelopeShape -> Value
+encodeReplayEnvelopeShape shape =
+  object
+      [ "label" .= encodeMaybeLabelShape (shape.label)
+      , "days" .= encodeImportantDaysShape (shape.days)
+      , "labels" .= encodeTextLabelsShape (shape.labels)
+      , "contentHash" .= encodeMaybeContentHashShape (shape.contentHash)
+      , "primary" .= encodeRetainedIdLeaf shape.primary
+      , "identities" .= Object (KeyMap.fromList [(Key.fromText (renderRetainedIdLeafKey key0), toJSON (item0)) | (key0, item0) <- Map.toList (shape.identities)])
+      , "optionalLabels" .= maybe Null (\item0 -> encodeTextSet (item0)) (shape.optionalLabels)
+      ]
+
+parseReplayEnvelopeShape :: Value -> Parser ShapeReplayEnvelope.ReplayEnvelopeShape
+parseReplayEnvelopeShape = withObject "ReplayEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "ReplayEnvelope" ["label", "days", "labels", "contentHash", "primary", "identities", "optionalLabels"] objectValue
+  ShapeReplayEnvelope.ReplayEnvelope
+    <$> explicitParseField (parseMaybeLabelShape) objectValue "label"
+    <*> explicitParseField (parseImportantDaysShape) objectValue "days"
+    <*> explicitParseField (parseTextLabelsShape) objectValue "labels"
+    <*> explicitParseField (parseMaybeContentHashShape) objectValue "contentHash"
+    <*> explicitParseField (parseRetainedIdLeaf) objectValue "primary"
+    <*> explicitParseField (\value0 -> withObject "Map[RetainedId]" (\object0 -> Map.fromList <$> traverse (\(rawKey0, item0) -> do key0 <- parseRetainedIdLeafKey (Key.toText rawKey0) <?> Key rawKey0; parsedItem0 <- (parseJSON) item0 <?> Key rawKey0; pure (key0, parsedItem0)) (KeyMap.toList object0)) value0) objectValue "identities"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0) objectValue "optionalLabels"
+
+encodeTextLabelsMapped :: TextLabels -> Value
+encodeTextLabelsMapped = encodeTextLabelsShape . bindingToShape Bindings.textLabelsBinding
+
+parseTextLabelsMapped :: Value -> Parser TextLabels
+parseTextLabelsMapped value = bindingFromShape Bindings.textLabelsBinding <$> parseTextLabelsShape value
+
+decodeTextLabelsMapped :: Value -> Either Text TextLabels
+decodeTextLabelsMapped = mapLeftText . parseEither parseTextLabelsMapped
+
+encodeTextLabelsShape :: ShapeTextLabels.TextLabelsShape -> Value
+encodeTextLabelsShape value = encodeTextSet (value)
+
+parseTextLabelsShape :: Value -> Parser ShapeTextLabels.TextLabelsShape
+parseTextLabelsShape = parseTextSet
+
+replayTargetEventTypes :: NonEmpty EventType
+replayTargetEventTypes = EventType "Stored" :| []
+
+replayTargetCodec :: Codec ReplayTargetEvent
+replayTargetCodec =
+  Codec
+    { eventTypes = replayTargetEventTypes
+    , eventType = \case
+        Stored{} -> EventType "Stored"
+    , schemaVersion = 1
+    , encode = encodeReplayTargetEvent
+    , decode = parseReplayTargetEvent
+    , upcasters = []
+    }
+
+encodeReplayTargetEvent :: ReplayTargetEvent -> Value
+encodeReplayTargetEvent = \case
+  Stored payload ->
+    object
+      [ "kind" .= ("Stored" :: Text)
+      , "retainedId" .= retainedIdText payload.retainedId
+      , "envelope" .= encodeReplayEnvelopeMapped payload.envelope
+      ]
+
+parseReplayTargetEvent :: EventType -> Value -> Either Text ReplayTargetEvent
+parseReplayTargetEvent (EventType tag) = mapLeftText . parseEither (withObject "ReplayTargetEvent" go)
+  where
+    go o = do
+      case tag of
+        "Stored" ->
+          Stored
+            <$> ( StoredData
+                    <$> (unsafeRetainedIdFromLegacyText <$> o .: "retainedId")
+                    <*> explicitParseField parseReplayEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes replayTargetEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.Domain where
+
+import Data.Proxy (Proxy (..))
+import GHC.Generics (Generic)
+import Keiki.Core (RegFile (..))
+import Generated.CheckedMappingReplay.Nominals (RetainedId)
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ReplayEnvelope)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data ReplayTargetVertex = ReplayTargetReady
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+
+data StoreData = StoreData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ReplayTargetCommand = Store !StoreData
+  deriving stock (Generic, Eq, Show)
+
+data StoredData = StoredData
+  { retainedId :: !RetainedId
+  , envelope :: !ReplayEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ReplayTargetEvent = Stored !StoredData
+  deriving stock (Generic, Eq, Show)
+
+type ReplayTargetRegs =
+  '[ '("latest", ReplayEnvelope)
+   ]
+
+initialReplayTargetRegs :: RegFile ReplayTargetRegs
+initialReplayTargetRegs =
+  RCons (Proxy @"latest") Bindings.initialReplayEnvelope RNil
+
+$(deriveAggregateCtorsAll ''ReplayTargetCommand ''ReplayTargetRegs)
+
+
+
+$(deriveWireCtorsAll ''ReplayTargetEvent)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs
@@ -0,0 +1,49 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.EventStream
+  ( replayTargetCategory
+  , replayTargetCommandCategory
+  , replayTargetEventStream
+  , replayTargetEventStreamDef
+  , ReplayTargetEventStream
+  , ReplayTargetEventStreamDef
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.Domain
+import Generated.CheckedMappingReplay.ReplayTarget.Codec (replayTargetCodec)
+import Generated.CheckedMappingReplay.ReplayTarget.Transducer (replayTargetTransducer)
+import Keiki.Core (HsPred)
+import Keiro.EventStream (EventStream (..), SnapshotPolicy (..))
+import Keiro.EventStream.Validate (ValidatedEventStream, mkEventStreamOrThrow)
+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.
+replayTargetCategory :: Stream.StreamCategory ReplayTargetEventStreamDef
+replayTargetCategory = Stream.categoryUnsafe "replayTarget"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+replayTargetCommandCategory :: Stream.StreamCategory ReplayTargetCommand
+replayTargetCommandCategory = Stream.categoryUnsafe "replayTarget"
+
+type ReplayTargetEventStreamDef =
+  EventStream (HsPred ReplayTargetRegs ReplayTargetCommand) ReplayTargetRegs ReplayTargetVertex ReplayTargetCommand ReplayTargetEvent
+
+type ReplayTargetEventStream =
+  ValidatedEventStream (HsPred ReplayTargetRegs ReplayTargetCommand) ReplayTargetRegs ReplayTargetVertex ReplayTargetCommand ReplayTargetEvent
+
+replayTargetEventStreamDef :: ReplayTargetEventStreamDef
+replayTargetEventStreamDef =
+  EventStream
+    { transducer = replayTargetTransducer,
+      initialState = ReplayTargetReady,
+      initialRegisters = initialReplayTargetRegs,
+      eventCodec = replayTargetCodec,
+      resolveStreamName = Stream.streamName,
+      snapshotPolicy = Never,
+      stateCodec = Nothing
+    }
+
+replayTargetEventStream :: ReplayTargetEventStream
+replayTargetEventStream =
+  mkEventStreamOrThrow "ReplayTarget" replayTargetEventStreamDef
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.Harness (harnessAssertions) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.Domain
+import Generated.CheckedMappingReplay.ReplayTarget.Codec (encodeReplayTargetEvent, parseReplayTargetEvent, replayTargetCodec, encodeReplayEnvelopeMapped, decodeReplayEnvelopeMapped)
+import Generated.CheckedMappingReplay.ReplayTarget.Transducer (replayTargetTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+import Keiro.Codec (eventType)
+import Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId)
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as AesonKey
+import Data.Aeson.KeyMap qualified as AesonKeyMap
+import Data.Either (isLeft, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.CheckedMappingReplay.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 replayTargetTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: Stored", roundTrips sampleEventStored)
+  , ("accepts Store from ReplayTargetReady", acceptStore)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayStore
+
+roundTrips :: ReplayTargetEvent -> Bool
+roundTrips e = parseReplayTargetEvent (eventType replayTargetCodec e) (encodeReplayTargetEvent e) == Right e
+
+sampleRetainedId :: RetainedId
+sampleRetainedId =
+  case parseRetainedId "retained_01h455vb4pex5vsknk084sn02q" of
+    Right parsed -> parsed
+    Left problem -> error (show problem)
+
+sampleEventStored :: ReplayTargetEvent
+sampleEventStored = Stored (StoredData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))
+
+acceptStore :: Bool
+acceptStore =
+  case step replayTargetTransducer (ReplayTargetReady, initialReplayTargetRegs) (Store (StoreData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == ReplayTargetReady
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayStore :: [(String, Bool)]
+forwardReplayStore =
+  case step replayTargetTransducer (ReplayTargetReady, initialReplayTargetRegs) (Store (StoreData sampleRetainedId (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseReplayTargetEvent (eventType replayTargetCodec event) (encodeReplayTargetEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither replayTargetTransducer (ReplayTargetReady, initialReplayTargetRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register latest", (replayRegs ! #latest) == (forwardRegs ! #latest))
+              ]
+  where
+    prefix = "forward/replay equality: Store from ReplayTargetReady -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ storedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+storedEnvelopeAssertions :: [(String, Bool)]
+storedEnvelopeAssertions =
+  [ ("mapped codec round-trip: Stored/envelope/" <> T.unpack label, roundTrips (Stored (StoredData sampleRetainedId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.checked-mapping-replay.ReplayEnvelope.v1/optionalLabels", case decodeReplayEnvelopeMapped (deleteObjectField "optionalLabels" (encodeReplayEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalLabels" (encodeReplayEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.checked-mapping-replay.ReplayEnvelope.v1/optionalLabels", isRight (decodeReplayEnvelopeMapped (insertObjectField "optionalLabels" Aeson.Null (encodeReplayEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.checked-mapping-replay.ReplayEnvelope.v1", all (\(_, value) -> isLeft (decodeReplayEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeReplayEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.
+module Generated.CheckedMappingReplay.ReplayTarget.Transducer
+  ( replayTargetTransducer
+  , replayTargetFoldFingerprint
+  , BehaviorOwnership (..)
+  , replayTargetPredicateVerifications
+  ) where
+
+import Generated.CheckedMappingReplay.ReplayTarget.Domain
+import Data.Text (Text)
+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 ((=:))
+
+replayTargetTransducer
+  :: SymTransducer
+       (HsPred ReplayTargetRegs ReplayTargetCommand)
+       ReplayTargetRegs
+       ReplayTargetVertex
+       ReplayTargetCommand
+       ReplayTargetEvent
+replayTargetTransducer =
+  B.buildTransducer ReplayTargetReady initialReplayTargetRegs isTerminal do
+    B.from ReplayTargetReady do
+      B.onCmd inCtorStore $ \d -> B.do
+        B.slot @"latest" =: d.envelope
+        B.emit wireStored (StoredTermFields
+          { retainedId = d.retainedId
+          , envelope = d.envelope
+          })
+        B.goto ReplayTargetReady
+ where
+  isTerminal = \case
+
+    _ -> False
+
+replayTargetFoldFingerprint :: Text
+replayTargetFoldFingerprint = "90fa5667a0617a785985587ae2b487db"
+
+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.
+replayTargetPredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+replayTargetPredicateVerifications = sequence
+  [ verifyTransition "transition1ReadyStore" GeneratedOwned ReplayTargetReady 0
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut replayTargetTransducer 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-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs
@@ -0,0 +1,24 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Aeson.Types (Parser)
+import Data.Text (Text)
+import Data.Text qualified as T
+import Generated.CheckedMappingReplay.Nominals qualified as Nominals
+
+encodeRetainedIdLeaf :: Nominals.RetainedId -> Value
+encodeRetainedIdLeaf = String . Nominals.retainedIdText
+{-# NOINLINE encodeRetainedIdLeaf #-}
+
+parseRetainedIdLeaf :: Value -> Parser Nominals.RetainedId
+parseRetainedIdLeaf = withText "RetainedId" (either (fail . T.unpack) pure . Nominals.parseRetainedId)
+{-# NOINLINE parseRetainedIdLeaf #-}
+
+renderRetainedIdLeafKey :: Nominals.RetainedId -> Text
+renderRetainedIdLeafKey = Nominals.retainedIdText
+{-# NOINLINE renderRetainedIdLeafKey #-}
+
+parseRetainedIdLeafKey :: Text -> Parser Nominals.RetainedId
+parseRetainedIdLeafKey = either (fail . T.unpack) pure . Nominals.parseRetainedId
+{-# NOINLINE parseRetainedIdLeafKey #-}
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type ContentHashShape = 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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type ImportantDaysShape = [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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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
+
+type MaybeContentHashShape = (Maybe ContentHash.ContentHashShape)
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type MaybeLabelShape = (Maybe 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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Set (Set)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.CheckedMappingReplay.Nominals qualified as Nominals
+import Generated.CheckedMappingReplay.Structural.Shape.ImportantDays qualified as ImportantDays
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash qualified as MaybeContentHash
+import Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel qualified as MaybeLabel
+import Generated.CheckedMappingReplay.Structural.Shape.TextLabels qualified as TextLabels
+
+data ReplayEnvelopeShape = ReplayEnvelope
+  { label :: !MaybeLabel.MaybeLabelShape
+  , days :: !ImportantDays.ImportantDaysShape
+  , labels :: !TextLabels.TextLabelsShape
+  , contentHash :: !MaybeContentHash.MaybeContentHashShape
+  , primary :: !Nominals.RetainedId
+  , identities :: !(Map Nominals.RetainedId Text)
+  , optionalLabels :: !(Maybe (Set Text))
+  }
+  deriving stock (Eq, Generic, Show)
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs
@@ -0,0 +1,7 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+
+type TextLabelsShape = (Set Text)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs
@@ -0,0 +1,157 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context checked-mapping-replay structural conformance; do not edit.
+module Generated.CheckedMappingReplay.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Types qualified as AesonTypes
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Core (fieldWitnessAgrees)
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Generated.CheckedMappingReplay.StructuralProjections qualified as StructuralProjections
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope (ReplayEnvelopeShape(optionalLabels))
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ContentHash, ImportantDays, MaybeContentHash, MaybeLabel, ReplayEnvelope, TextLabels)
+import Generated.CheckedMappingReplay.Nominals qualified as Nominals
+import Generated.CheckedMappingReplay.Structural.NominalLeaves qualified as NominalLeaves
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ contentHashBindingAssertions
+    , importantDaysBindingAssertions
+    , maybeContentHashBindingAssertions
+    , maybeLabelBindingAssertions
+    , replayEnvelopeBindingAssertions
+    , textLabelsBindingAssertions
+    , [("generated nominal canonical text: conformance.checked-mapping-replay.ReplayEnvelope.v1/RetainedId", all (\(_, value) -> (case bindingToShape Bindings.replayEnvelopeBinding value of ShapeReplayEnvelope.ReplayEnvelope _ _ _ _ field0_4 field0_5 _ -> ((NominalLeaves.encodeRetainedIdLeaf (field0_4) == Aeson.String (Nominals.retainedIdText (field0_4)) && AesonTypes.parseEither NominalLeaves.parseRetainedIdLeaf (NominalLeaves.encodeRetainedIdLeaf (field0_4)) == Right (field0_4))) && ((all (\key1 -> (NominalLeaves.encodeRetainedIdLeaf (key1) == Aeson.String (Nominals.retainedIdText (key1)) && AesonTypes.parseEither NominalLeaves.parseRetainedIdLeaf (NominalLeaves.encodeRetainedIdLeaf (key1)) == Right (key1))) (Map.keys (field0_5)))))) (NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)))]
+    , [("fixture coverage: conformance.checked-mapping-replay.ContentHash.v1", coverageContentHash)]
+    , [("fixture coverage: conformance.checked-mapping-replay.ImportantDays.v1", coverageImportantDays)]
+    , [("fixture coverage: conformance.checked-mapping-replay.MaybeContentHash.v1", coverageMaybeContentHash)]
+    , [("fixture coverage: conformance.checked-mapping-replay.MaybeLabel.v1", coverageMaybeLabel)]
+    , [("fixture coverage: conformance.checked-mapping-replay.ReplayEnvelope.v1", coverageReplayEnvelope)]
+    , [("fixture coverage: conformance.checked-mapping-replay.TextLabels.v1", coverageTextLabels)]
+    , 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)
+
+contentHashBindingAssertions :: [(String, Bool)]
+contentHashBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.ContentHash.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.ContentHash.v1", canonicalTypeName (Proxy @ContentHash) == "conformance.checked-mapping-replay.ContentHash.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.ContentHash.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.contentHashBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.ContentHash.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.contentHashBinding (bindingToShape Bindings.contentHashBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.contentHashFixtures
+
+importantDaysBindingAssertions :: [(String, Bool)]
+importantDaysBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.ImportantDays.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.ImportantDays.v1", canonicalTypeName (Proxy @ImportantDays) == "conformance.checked-mapping-replay.ImportantDays.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.ImportantDays.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.importantDaysBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.ImportantDays.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.importantDaysBinding (bindingToShape Bindings.importantDaysBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.importantDaysFixtures
+
+maybeContentHashBindingAssertions :: [(String, Bool)]
+maybeContentHashBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.MaybeContentHash.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.MaybeContentHash.v1", canonicalTypeName (Proxy @MaybeContentHash) == "conformance.checked-mapping-replay.MaybeContentHash.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.MaybeContentHash.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeContentHashBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.MaybeContentHash.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeContentHashBinding (bindingToShape Bindings.maybeContentHashBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeContentHashFixtures
+
+maybeLabelBindingAssertions :: [(String, Bool)]
+maybeLabelBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.MaybeLabel.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.MaybeLabel.v1", canonicalTypeName (Proxy @MaybeLabel) == "conformance.checked-mapping-replay.MaybeLabel.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.MaybeLabel.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeLabelBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.MaybeLabel.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeLabelBinding (bindingToShape Bindings.maybeLabelBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeLabelFixtures
+
+replayEnvelopeBindingAssertions :: [(String, Bool)]
+replayEnvelopeBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.ReplayEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.ReplayEnvelope.v1", canonicalTypeName (Proxy @ReplayEnvelope) == "conformance.checked-mapping-replay.ReplayEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.ReplayEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.replayEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.ReplayEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.replayEnvelopeBinding (bindingToShape Bindings.replayEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.replayEnvelopeFixtures
+
+textLabelsBindingAssertions :: [(String, Bool)]
+textLabelsBindingAssertions =
+  ("fixture labels: conformance.checked-mapping-replay.TextLabels.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.checked-mapping-replay.TextLabels.v1", canonicalTypeName (Proxy @TextLabels) == "conformance.checked-mapping-replay.TextLabels.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.checked-mapping-replay.TextLabels.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textLabelsBinding value)
+      , ("binding shape round-trip: conformance.checked-mapping-replay.TextLabels.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textLabelsBinding (bindingToShape Bindings.textLabelsBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.textLabelsFixtures
+
+coverageContentHash :: Bool
+coverageContentHash = True
+
+coverageImportantDays :: Bool
+coverageImportantDays = any null shapes && any (not . null) shapes
+  where
+    shapes = map (bindingToShape Bindings.importantDaysBinding . snd) (NonEmpty.toList (fixtureCases Bindings.importantDaysFixtures))
+
+coverageMaybeContentHash :: Bool
+coverageMaybeContentHash = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeContentHashBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeContentHashFixtures))
+
+coverageMaybeLabel :: Bool
+coverageMaybeLabel = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeLabelBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeLabelFixtures))
+
+coverageReplayEnvelope :: Bool
+coverageReplayEnvelope = any (isNothing . (.optionalLabels)) shapes && any (isJust . (.optionalLabels)) shapes
+  where
+    shapes = map (bindingToShape Bindings.replayEnvelopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures))
+
+coverageTextLabels :: Bool
+coverageTextLabels = True
+
+structuralProjectionAssertions :: [(String, Bool)]
+structuralProjectionAssertions =
+  [ ("projection witness agreement: conformance.checked-mapping-replay.ReplayEnvelope.v1/primary", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.replayEnvelopePrimaryWitness (\referenceOwner -> StructuralProjections.replayEnvelopePrimaryGet referenceOwner) owner) (NonEmpty.toList (fixtureCases Bindings.replayEnvelopeFixtures)))
+  ]
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE TypeFamilies #-}
+-- @generated by keiro-dsl 0.18.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.
+module Generated.CheckedMappingReplay.StructuralProjections
+  ( replayEnvelopePrimaryWitness
+  , replayEnvelopePrimaryGet
+  , replayEnvelopePrimaryRawGet
+  ) where
+
+import Data.Text (Text)
+import Data.List.NonEmpty qualified as NonEmpty
+import Keiro.Codec.IdDomain (idDomainTextPattern, typeIdV5OrV7Domain)
+import Keiro.Codec.Structural (bindingToShape, bindingFromShape, fixtureCases)
+import Keiki.Core (FieldProjection (..), FieldWitness, ExactFieldProjection (..), exactFieldWitness)
+import Keiki.ProjectionDomain (TextPattern, textProjectionDomain)
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope (ReplayEnvelopeShape(primary))
+import Conformance.CheckedMappingReplay.Bindings qualified as Bindings
+import Conformance.CheckedMappingReplay.Domain (ReplayEnvelope)
+import Generated.CheckedMappingReplay.Nominals qualified as Nominals
+import Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope qualified as ShapeReplayEnvelope
+
+replayEnvelopePrimaryProjectionDomainPattern :: TextPattern
+replayEnvelopePrimaryProjectionDomainPattern = either (error . show) id (idDomainTextPattern (typeIdV5OrV7Domain "retained"))
+
+data ReplayEnvelopePrimaryProjection
+
+replayEnvelopePrimaryRawGet :: ReplayEnvelope -> Nominals.RetainedId
+replayEnvelopePrimaryRawGet owner = (bindingToShape Bindings.replayEnvelopeBinding owner).primary
+
+replayEnvelopePrimaryGet :: ReplayEnvelope -> Text
+replayEnvelopePrimaryGet owner = Nominals.retainedIdText (replayEnvelopePrimaryRawGet owner)
+
+instance FieldProjection ReplayEnvelopePrimaryProjection where
+  type FieldName ReplayEnvelopePrimaryProjection = "/primary"
+  type FieldOwner ReplayEnvelopePrimaryProjection = ReplayEnvelope
+  type FieldResult ReplayEnvelopePrimaryProjection = Text
+  fieldShapeId _ = "conformance.checked-mapping-replay.ReplayEnvelope.v1"
+  projectFieldValue _ = replayEnvelopePrimaryGet
+
+instance ExactFieldProjection ReplayEnvelopePrimaryProjection where
+  fieldProjectionDomain _ = textProjectionDomain replayEnvelopePrimaryProjectionDomainPattern
+  reconstructFieldOwner _ value = do
+    fieldValue <- either (const Nothing) Just (Nominals.parseRetainedId value)
+    let baseShape = bindingToShape Bindings.replayEnvelopeBinding (snd (NonEmpty.head (fixtureCases Bindings.replayEnvelopeFixtures)))
+    pure (bindingFromShape Bindings.replayEnvelopeBinding (case baseShape of ShapeReplayEnvelope.ReplayEnvelope projectionField0_0 projectionField0_1 projectionField0_2 projectionField0_3 _ projectionField0_5 projectionField0_6 -> ShapeReplayEnvelope.ReplayEnvelope projectionField0_0 projectionField0_1 projectionField0_2 projectionField0_3 fieldValue projectionField0_5 projectionField0_6))
+
+replayEnvelopePrimaryWitness :: FieldWitness ReplayEnvelopePrimaryProjection
+replayEnvelopePrimaryWitness = exactFieldWitness @ReplayEnvelopePrimaryProjection
diff --git a/test/conformance-checked-mapping-replay/Main.hs b/test/conformance-checked-mapping-replay/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/Main.hs
@@ -0,0 +1,355 @@
+module Main (main) where
+
+import Conformance.CheckedMappingReplay.Domain qualified as Domain
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..), object, (.=))
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.ByteString qualified as BS
+import Data.Either (isLeft)
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Set qualified as Set
+import Data.Text (Text)
+import Data.Text qualified as Text
+import Data.Time.Calendar (fromGregorian)
+import Generated.CheckedMappingReplay.Nominals (RetainedId, parseRetainedId, retainedIdText)
+import Generated.CheckedMappingReplay.ReplayEvents.Contract
+import Generated.CheckedMappingReplay.ReplayJobs.Queue (ReplayJob (..), encodeReplayJob, parseReplayJob)
+import Generated.CheckedMappingReplay.ReplayLedger.Codec
+import Generated.CheckedMappingReplay.ReplayLedger.Domain
+import Generated.CheckedMappingReplay.ReplayLedger.EventStream (replayLedgerSnapshotFixture)
+import Generated.CheckedMappingReplay.ReplayLedger.Harness (harnessAssertions)
+import Generated.CheckedMappingReplay.ReplayLedger.Transducer (replayLedgerTransducer)
+import Generated.CheckedMappingReplay.ReplayLookup.QueryContract (ReplayLookupQueryInput, ReplayLookupQueryResult)
+import Generated.CheckedMappingReplay.ReplayReaction.Input (ReplayReactionInput (ReplayRequested))
+import Generated.CheckedMappingReplay.ReplayReaction.ProcessHarness (processHarnessValues)
+import Generated.CheckedMappingReplay.ReplayTarget.Harness qualified as ReplayTarget
+import Generated.CheckedMappingReplay.StructuralConformance (structuralConformanceAssertions)
+import Keiki.Core (applyEventsEither, (!))
+import Keiro.Codec (EventType (..))
+import Keiro.Test.ReplayCompatibility
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  retained <- Aeson.eitherDecodeFileStrict' retainedFixturePath
+  let retainedReplay = either (const False) retainedHistoryReplays retained
+      retainedNormalization = either (const False) retainedHistoryNormalizes retained
+      assertions =
+        [("structural/" <> label, passed) | (label, passed) <- structuralConformanceAssertions]
+          <> harnessAssertions
+          <> [("target/" <> label, passed) | (label, passed) <- ReplayTarget.harnessAssertions]
+          <> [ ("retained JSON fixture crosses the generated event parser and transducer", retainedReplay),
+               ("admitted historical spellings normalize to canonical bytes and identical state", retainedNormalization),
+               ("replay-only history preserves UUIDv5 and all checked mappings", replayOnlyHistory),
+               ("serialized UUIDv5 and UUIDv7 event history retains exact identities", identifierHistory),
+               ("queue, query, and contract surfaces preserve the integrated envelope", generatedSurfaceAgreement),
+               ("generated process input carries the integrated envelope", processReactionInputAgreement),
+               ("generated process reaction decisions remain pinned", processReactionHarnessAgreement),
+               ("application-owned workflow result codec preserves the integrated envelope", workflowCodecAgreement),
+               ("snapshot discriminator remains explicit in the integrated evidence", replayLedgerSnapshotFixture == (1, "checked-mapping-replay-v1")),
+               ("baseline and candidate replay evidence satisfy the release comparator", releaseReady integratedInventory baselineReport candidateReport),
+               ("date semantic mutations are detected", mutationDetected "date" (mutateState "date" (String "2000-03-01"))),
+               ("set semantic mutations are detected", mutationDetected "set" (mutateState "labels" (Aeson.toJSON (["a", "c"] :: [Text])))),
+               ("base16 semantic mutations are detected", mutationDetected "base16" (mutateState "contentHash" (String "00bf"))),
+               ("identifier mutations are detected", mutationDetected "identifier" (mutateIdentity "entity" retainedV7Text)),
+               ("consumer binding mutations are detected", mutationDetected "binding" (mutateState "binding" (String "transposed"))),
+               ("event-shape mutations are detected", mutationDetected "event-shape" (integratedObservation {continuations = [String "MappingReplaced"]})),
+               ("process-manager identity mutations are detected", mutationDetected "process" (mutateIdentity "process" "replay-process-v2")),
+               ("workflow journal-key mutations are detected", mutationDetected "workflow" (mutateIdentity "workflow" "workflow/replay/v2")),
+               ("unverified consumer evidence prevents release readiness", not (releaseReady integratedInventory baselineReport unverifiedCandidateReport)),
+               ("information-losing event changes fail before replay", informationLossRejected)
+             ]
+  forM_ assertions $ \(label, passed) ->
+    putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+retainedFixturePath :: FilePath
+retainedFixturePath = "test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json"
+
+retainedHistoryReplays :: Value -> Bool
+retainedHistoryReplays wire =
+  case replayRawEnvelope wire of
+    Right (vertex, current, currentId) ->
+      vertex == ReplayLedgerRecorded
+        && current == expectedEnvelope
+        && retainedIdText currentId == retainedV5Text
+    Left _ -> False
+
+retainedHistoryNormalizes :: Value -> Bool
+retainedHistoryNormalizes historical =
+  decodeReplayEnvelopeMapped historical == Right expectedEnvelope
+    && encodeReplayEnvelopeMapped expectedEnvelope == canonicalEnvelope
+    && null
+      ( checkNormalizationLaw
+          decodeReplayEnvelopeMapped
+          encodeReplayEnvelopeMapped
+          replayRawEnvelopeChain
+          []
+          historical
+          canonicalEnvelope
+          []
+      )
+
+replayRawEnvelopeChain :: [Value] -> Either Text (ReplayLedgerVertex, Domain.ReplayEnvelope, RetainedId)
+replayRawEnvelopeChain [wire] = replayRawEnvelope wire
+replayRawEnvelopeChain _ = Left "the terminal integration aggregate expects exactly one retained transition"
+
+replayRawEnvelope :: Value -> Either Text (ReplayLedgerVertex, Domain.ReplayEnvelope, RetainedId)
+replayRawEnvelope wire = do
+  let recorded = MappingRecorded (MappingRecordedData retainedV5 expectedEnvelope)
+      audited = MappingAudited (MappingAuditedData retainedV5 expectedEnvelope)
+  recordedEvent <- parseReplayLedgerEvent (EventType "MappingRecorded") (replaceObjectField "envelope" wire (encodeReplayLedgerEvent recorded))
+  auditedEvent <- parseReplayLedgerEvent (EventType "MappingAudited") (replaceObjectField "envelope" wire (encodeReplayLedgerEvent audited))
+  (vertex, registers) <- firstText (applyEventsEither replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) [recordedEvent, auditedEvent])
+  pure (vertex, registers ! #current, registers ! #currentId)
+
+replayOnlyHistory :: Bool
+replayOnlyHistory =
+  case parseReplayLedgerEvent (EventType "LegacyMappingImported") rawEvent of
+    Left _ -> False
+    Right parsed -> case applyEventsEither replayLedgerTransducer (ReplayLedgerEmpty, initialReplayLedgerRegs) [parsed] of
+      Left _ -> False
+      Right (vertex, registers) ->
+        vertex == ReplayLedgerRecorded
+          && registers ! #current == expectedEnvelope
+          && registers ! #currentId == retainedV5
+  where
+    event = LegacyMappingImported (LegacyMappingImportedData retainedV5 expectedEnvelope)
+    rawEvent = replaceObjectField "envelope" nonCanonicalEnvelope (encodeReplayLedgerEvent event)
+
+identifierHistory :: Bool
+identifierHistory =
+  decodeReplayEnvelopeMapped nonCanonicalEnvelope == Right expectedEnvelope
+    && Map.keys identityMap == [retainedV7, retainedV5]
+    && retainedIdText retainedV5 == retainedV5Text
+    && retainedIdText retainedV7 == retainedV7Text
+
+generatedSurfaceAgreement :: Bool
+generatedSurfaceAgreement =
+  parseReplayJob (encodeReplayJob queuePayload) == Right queuePayload
+    && queryInputIdentity expectedEnvelope == expectedEnvelope
+    && queryResultIdentity [expectedEnvelope] == [expectedEnvelope]
+    && parseReplayEventsPayload (encodeReplayEventsPayload contractPayload) == Right contractPayload
+  where
+    queuePayload = ReplayJob retainedV5 expectedEnvelope
+    contractPayload = ReplayLinked (ReplayLinkedData retainedV5)
+
+queryInputIdentity :: ReplayLookupQueryInput -> Domain.ReplayEnvelope
+queryInputIdentity = id
+
+queryResultIdentity :: ReplayLookupQueryResult -> [Domain.ReplayEnvelope]
+queryResultIdentity = id
+
+workflowCodecAgreement :: Bool
+workflowCodecAgreement =
+  decodeWorkflowResult (encodeWorkflowResult expectedEnvelope) == Right expectedEnvelope
+    && decodeWorkflowResult nonCanonicalEnvelope == Right expectedEnvelope
+
+encodeWorkflowResult :: Domain.ReplayEnvelope -> Value
+encodeWorkflowResult = encodeReplayEnvelopeMapped
+
+decodeWorkflowResult :: Value -> Either Text Domain.ReplayEnvelope
+decodeWorkflowResult = decodeReplayEnvelopeMapped
+
+processReactionInputAgreement :: Bool
+processReactionInputAgreement = processReactionInputDecode == Aeson.Success processReactionInput
+
+processReactionInputDecode :: Aeson.Result ReplayReactionInput
+processReactionInputDecode = Aeson.fromJSON (Aeson.toJSON processReactionInput)
+
+processReactionInput :: ReplayReactionInput
+processReactionInput = ReplayRequested retainedV5 processEnvelope
+
+-- Process input decoding is application-owned. This value deliberately stays
+-- inside the consumer codec's admitted Day range; retained extended-year bytes
+-- are exercised through the generated event codec above.
+processEnvelope :: Domain.ReplayEnvelope
+processEnvelope =
+  Domain.ReplayEnvelope
+    (Domain.MaybeLabel (Just "process"))
+    (Domain.ImportantDays [fromGregorian 2000 2 29])
+    (Domain.TextLabels (Set.fromList ["a", "b"]))
+    (Domain.MaybeContentHash (Just (Domain.ContentHash (BS.pack [0, 175]))))
+    retainedV5
+    identityMap
+    (Just (Set.fromList ["process", "reaction"]))
+
+processReactionHarnessAgreement :: Bool
+processReactionHarnessAgreement =
+  processHarnessValues
+    == [ ("reactionOwnership", "generated-declarative"),
+         ("reactionVersion", "1"),
+         ("reactionFingerprint", "cc73d755be55b8a2d237ac02752ad8d425a50c5fb9f7c3bab8b5f5ada239b1c8"),
+         ("reaction.ReplayRequested.0", "guard=always;advance=Record;followUps=dispatch:ReplayTarget.Store;accepted=")
+       ]
+
+informationLossRejected :: Bool
+informationLossRejected =
+  isLeft (parseReplayLedgerEvent (EventType "MappingRecorded") (deleteNestedEnvelopeField "contentHash" encoded))
+  where
+    encoded = encodeReplayLedgerEvent (MappingRecorded (MappingRecordedData retainedV5 expectedEnvelope))
+
+expectedEnvelope :: Domain.ReplayEnvelope
+expectedEnvelope =
+  Domain.ReplayEnvelope
+    (Domain.MaybeLabel (Just "retained"))
+    (Domain.ImportantDays [fromGregorian 2000 2 29, fromGregorian 12345678901234567890 6 30])
+    (Domain.TextLabels (Set.fromList ["a", "b"]))
+    (Domain.MaybeContentHash (Just (Domain.ContentHash (BS.pack [0, 175]))))
+    retainedV5
+    identityMap
+    (Just (Set.fromList ["a", "z"]))
+
+identityMap :: Map RetainedId Text
+identityMap = Map.fromList [(retainedV5, "historical-v5"), (retainedV7, "current-v7")]
+
+canonicalEnvelope :: Value
+canonicalEnvelope = encodeReplayEnvelopeMapped expectedEnvelope
+
+nonCanonicalEnvelope :: Value
+nonCanonicalEnvelope =
+  object
+    [ "label" .= String "retained",
+      "days" .= (["+002000-02-29", "12345678901234567890-06-30"] :: [Text]),
+      "labels" .= (["b", "a", "a"] :: [Text]),
+      "contentHash" .= String "00AF",
+      "primary" .= retainedV5Text,
+      "identities" .= object [Key.fromText retainedV5Text .= String "historical-v5", Key.fromText retainedV7Text .= String "current-v7"],
+      "optionalLabels" .= (["z", "a", "a"] :: [Text])
+    ]
+
+retainedV5Text, retainedV7Text :: Text
+retainedV5Text = "retained_58kj0y515rbwebzaxwzzknjqnk"
+retainedV7Text = "retained_01h455vb4pex5vsknk084sn02q"
+
+retainedV5, retainedV7 :: RetainedId
+retainedV5 = committedId retainedV5Text
+retainedV7 = committedId retainedV7Text
+
+committedId :: Text -> RetainedId
+committedId value = case parseRetainedId value of
+  Right parsed -> parsed
+  Left reason -> error ("invalid committed RetainedId fixture: " <> show reason)
+
+replaceObjectField :: Key.Key -> Value -> Value -> Value
+replaceObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+replaceObjectField _ _ value = value
+
+deleteNestedEnvelopeField :: Key.Key -> Value -> Value
+deleteNestedEnvelopeField key (Object outer) =
+  case KeyMap.lookup "envelope" outer of
+    Just (Object envelope) -> Object (KeyMap.insert "envelope" (Object (KeyMap.delete key envelope)) outer)
+    _ -> Object outer
+deleteNestedEnvelopeField _ value = value
+
+firstText :: (Show problem) => Either problem value -> Either Text value
+firstText = either (Left . Text.pack . show) Right
+
+integratedInventory :: EvidenceInventory
+integratedInventory =
+  EvidenceInventory
+    { inventoryVersion = inventoryVersionV1,
+      inventoryId = "checked-mapping-replay/inventory/v1",
+      buildPair = integratedBuildPair,
+      contributions =
+        [ InventoryContribution source Applicable integratedCases
+        | source <- inventorySourcesV1
+        ]
+    }
+
+integratedCases :: [RequiredCase]
+integratedCases =
+  [ RequiredCase "aggregate-history" HistoricalRead aggregateSurface,
+    RequiredCase "semantic-equivalence" SemanticEquivalence aggregateSurface,
+    RequiredCase "old-reader-new-writer" OldReaderNewWriter aggregateSurface,
+    RequiredCase "snapshot-replay" SnapshotReplay snapshotSurface,
+    RequiredCase "process-recovery" ProcessManagerReplay processSurface,
+    RequiredCase "workflow-journal" WorkflowReplay workflowSurface
+  ]
+
+aggregateSurface, snapshotSurface, processSurface, workflowSurface :: PersistedSurface
+aggregateSurface = PersistedSurface "event-stream" "ReplayLedger" "replayLedger/<retained-id>"
+snapshotSurface = PersistedSurface "snapshot" "ReplayLedger" "checked-mapping-replay-v1"
+processSurface = PersistedSurface "process-manager" "ReplayProjection" "replay-process-v1"
+workflowSurface = PersistedSurface "workflow-journal" "ReplayWorkflow" "workflow/replay/v1"
+
+integratedBuildPair :: BuildPair
+integratedBuildPair =
+  BuildPair
+    (BuildIdentity "retained-v1" "keiro-dsl-6" "keiro-runtime-v1" "integrated-plan-v1")
+    (BuildIdentity "candidate-v1" "keiro-dsl-6" "keiro-runtime-v1" "integrated-plan-v1")
+
+baselineReport, candidateReport, unverifiedCandidateReport :: CaptureReport
+baselineReport = capture BaselineCapture
+candidateReport = capture CandidateCapture
+unverifiedCandidateReport =
+  candidateReport
+    { results = case candidateReport.results of
+        [] -> []
+        row : remaining -> row {verdict = Unverified "consumer history was not captured"} : remaining
+    }
+
+capture :: CaptureRole -> CaptureReport
+capture captureRole =
+  CaptureReport
+    { reportVersion = reportVersionV1,
+      role = captureRole,
+      buildPair = integratedBuildPair,
+      inventoryId = "checked-mapping-replay/inventory/v1",
+      corpusHash = "checked-mapping-replay-retained-v1",
+      observationContractVersion = "checked-mapping-replay/observation/v1",
+      highWaterMarks = [HighWaterMark "replayLedger/retained-v5" 2],
+      selectedSurfaces = [aggregateSurface, snapshotSurface, processSurface, workflowSurface],
+      determinismInputs = DeterminismInputs "frozen" "none" "none" "partial-success-after-first-target",
+      results = [CaseResult required Passed (Just (observationFor required.caseKind)) | required <- integratedCases]
+    }
+
+observationFor :: CaseKind -> Observation
+observationFor kind = case kind of
+  ProcessManagerReplay -> processObservation
+  WorkflowReplay -> workflowObservation
+  _ -> integratedObservation
+
+integratedObservation :: Observation
+integratedObservation =
+  Observation
+    { durableState =
+        Map.fromList
+          [ ("date", String "2000-02-29"),
+            ("labels", Aeson.toJSON (["a", "b"] :: [Text])),
+            ("contentHash", String "00af"),
+            ("binding", canonicalEnvelope),
+            ("state", String "ReplayLedgerRecorded")
+          ],
+      continuations = [String "MappingRecorded", String "MappingAudited"],
+      durableIdentities = Map.fromList [("entity", retainedV5Text), ("snapshot", "checked-mapping-replay-v1")],
+      freshAllocations = []
+    }
+
+processObservation :: Observation
+processObservation =
+  integratedObservation
+    { durableState = Map.insert "partialFanout" (String "resume-second-target") integratedObservation.durableState,
+      continuations = integratedObservation.continuations <> [String "timer/retry-v1"],
+      durableIdentities = Map.insert "process" "replay-process-v1" integratedObservation.durableIdentities
+    }
+
+workflowObservation :: Observation
+workflowObservation =
+  integratedObservation
+    { durableState = Map.insert "workflowResult" canonicalEnvelope integratedObservation.durableState,
+      continuations = integratedObservation.continuations <> [String "resume/checked-mapping"],
+      durableIdentities = Map.insert "workflow" "workflow/replay/v1" integratedObservation.durableIdentities
+    }
+
+mutationDetected :: Text -> Observation -> Bool
+mutationDetected label mutated = not (null (compareObservation label integratedObservation mutated))
+
+mutateState :: Text -> Value -> Observation
+mutateState key value = integratedObservation {durableState = Map.insert key value integratedObservation.durableState}
+
+mutateIdentity :: Text -> Text -> Observation
+mutateIdentity key value = integratedObservation {durableIdentities = Map.insert key value integratedObservation.durableIdentities}
diff --git a/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json b/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json
@@ -0,0 +1,12 @@
+{
+  "label": "retained",
+  "days": ["+002000-02-29", "12345678901234567890-06-30"],
+  "labels": ["b", "a", "a"],
+  "contentHash": "00AF",
+  "primary": "retained_58kj0y515rbwebzaxwzzknjqnk",
+  "identities": {
+    "retained_58kj0y515rbwebzaxwzzknjqnk": "historical-v5",
+    "retained_01h455vb4pex5vsknk084sn02q": "current-v7"
+  },
+  "optionalLabels": ["z", "a", "a"]
+}
diff --git a/test/conformance-checked-mapping-replay/keiro-dsl-cabal-fragment.workspace.checked-mapping-replay.txt b/test/conformance-checked-mapping-replay/keiro-dsl-cabal-fragment.workspace.checked-mapping-replay.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/keiro-dsl-cabal-fragment.workspace.checked-mapping-replay.txt
@@ -0,0 +1,84 @@
+-- keiro-dsl build manifest for service.keiro-workspace
+-- 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:
+    CheckedMappingReplay.ProjectionCatalog.ProjectionCatalogHoles
+    CheckedMappingReplay.ReplayLedger.BehaviorHoles
+    CheckedMappingReplay.ReplayLookup.ReadModelHoles
+    CheckedMappingReplay.ReplayReaction.ProcessHoles
+    CheckedMappingReplay.ReplayTarget.BehaviorHoles
+    Conformance.CheckedMappingReplay.Bindings
+    Generated.CheckedMappingReplay.BehaviorSourceMap
+    Generated.CheckedMappingReplay.Nominals
+    Generated.CheckedMappingReplay.Nominals.Internal
+    Generated.CheckedMappingReplay.ProjectionCatalog
+    Generated.CheckedMappingReplay.ReplayAudit
+    Generated.CheckedMappingReplay.ReplayEvents.Contract
+    Generated.CheckedMappingReplay.ReplayJobs.Queue
+    Generated.CheckedMappingReplay.ReplayJobs.QueueCodec
+    Generated.CheckedMappingReplay.ReplayJobs.QueuePolicy
+    Generated.CheckedMappingReplay.ReplayLedger.BehaviorContract
+    Generated.CheckedMappingReplay.ReplayLedger.Codec
+    Generated.CheckedMappingReplay.ReplayLedger.Domain
+    Generated.CheckedMappingReplay.ReplayLedger.EventStream
+    Generated.CheckedMappingReplay.ReplayLedger.Harness
+    Generated.CheckedMappingReplay.ReplayLedger.Projection
+    Generated.CheckedMappingReplay.ReplayLedger.Transducer
+    Generated.CheckedMappingReplay.ReplayLookup.QueryContract
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModel
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModelHarness
+    Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable
+    Generated.CheckedMappingReplay.ReplayReaction.Input
+    Generated.CheckedMappingReplay.ReplayReaction.Process
+    Generated.CheckedMappingReplay.ReplayReaction.ProcessHarness
+    Generated.CheckedMappingReplay.ReplayTarget.BehaviorContract
+    Generated.CheckedMappingReplay.ReplayTarget.Codec
+    Generated.CheckedMappingReplay.ReplayTarget.Domain
+    Generated.CheckedMappingReplay.ReplayTarget.EventStream
+    Generated.CheckedMappingReplay.ReplayTarget.Harness
+    Generated.CheckedMappingReplay.ReplayTarget.Projection
+    Generated.CheckedMappingReplay.ReplayTarget.Transducer
+    Generated.CheckedMappingReplay.Structural.NominalLeaves
+    Generated.CheckedMappingReplay.Structural.Shape.ContentHash
+    Generated.CheckedMappingReplay.Structural.Shape.ImportantDays
+    Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash
+    Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel
+    Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope
+    Generated.CheckedMappingReplay.Structural.Shape.TextLabels
+    Generated.CheckedMappingReplay.StructuralConformance
+    Generated.CheckedMappingReplay.StructuralProjections
+
+build-depends:
+    , aeson
+    , base
+    , bytestring
+    , containers
+    , effectful-core
+    , hasql-transaction
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , kiroku-store
+    , mmzk-typeid
+    , shibuya-core
+    , text
+    , time
+    , uuid
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.CheckedMappingReplay.Bindings
+    Conformance.CheckedMappingReplay.Domain
diff --git a/test/conformance-checked-mapping-replay/keiro-dsl-ledger.workspace.checked-mapping-replay.txt b/test/conformance-checked-mapping-replay/keiro-dsl-ledger.workspace.checked-mapping-replay.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-checked-mapping-replay/keiro-dsl-ledger.workspace.checked-mapping-replay.txt
@@ -0,0 +1,103 @@
+keiro-dsl workspace scaffold record v1
+service: checked-mapping-replay
+manifest: service.keiro-workspace
+context: checked-mapping-replay
+module-root: (none)
+layout: prefixed
+naming-edition idiomatic-v2
+member domain/service.keiro
+member domain/values.keiro
+source-language {"declaredLanguageVersion":6,"effectiveLanguageVersion":6,"path":"domain/service.keiro","sourceForm":"declared"}
+source-language {"declaredLanguageVersion":6,"effectiveLanguageVersion":6,"path":"domain/values.keiro","sourceForm":"declared"}
+semantic-contract {"languageSupport":"candidate","languageVersion":6,"runtimeSemantics":"keiro-dsl/runtime-semantics/5"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/StructuralConformance.hs","roleFamily":"StructuralConformance","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay structural conformance"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/BehaviorSourceMap.hs","roleFamily":"BehaviorSourceMap","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay behavior source map"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs","roleFamily":"ContentHash","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural ContentHash (line 149)"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs","roleFamily":"ImportantDays","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural ImportantDays (line 131)"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs","roleFamily":"MaybeContentHash","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural MaybeContentHash (line 158)"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs","roleFamily":"MaybeLabel","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural MaybeLabel (line 122)"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs","roleFamily":"ReplayEnvelope","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural ReplayEnvelope (line 167)"}
+module {"kind":"generated","owner":"domain/values.keiro","path":"Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs","roleFamily":"TextLabels","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: mapped structural TextLabels (line 140)"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/StructuralProjections.hs","roleFamily":"StructuralProjections","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay mapped structural facade"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/Nominals.hs","roleFamily":"Nominals","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay generated nominal declarations"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/Nominals/Internal.hs","roleFamily":"Internal","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay generated nominal ID internals"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/Structural/NominalLeaves.hs","roleFamily":"NominalLeaves","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay structural nominal leaves"}
+module {"kind":"hole","owner":"domain/values.keiro","path":"Conformance/CheckedMappingReplay/Bindings.hs","roleFamily":"Bindings","roleOwnerKind":"domain/values.keiro:","roleOwnerName":"domain/values.keiro: consumer binding skeleton Conformance.CheckedMappingReplay.Bindings"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/ReplayAudit.hs","roleFamily":"ReplayAudit","roleOwnerKind":"context","roleOwnerName":"context checked-mapping-replay replay-audit assembly"}
+module {"kind":"generated","path":"Generated/CheckedMappingReplay/ProjectionCatalog.hs","roleFamily":"ProjectionCatalog","roleOwnerKind":"projection-catalog","roleOwnerName":"projection-catalog checked-mapping-replay"}
+module {"kind":"hole","path":"CheckedMappingReplay/ProjectionCatalog/ProjectionCatalogHoles.hs","roleFamily":"ProjectionCatalogHoles","roleOwnerKind":"projection-catalog","roleOwnerName":"projection-catalog checked-mapping-replay"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/Domain.hs","roleFamily":"Domain","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/Codec.hs","roleFamily":"Codec","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs","roleFamily":"Transducer","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs","roleFamily":"BehaviorContract","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"hole","owner":"domain/service.keiro","path":"CheckedMappingReplay/ReplayLedger/BehaviorHoles.hs","roleFamily":"BehaviorHoles","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate behavior witnesses ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs","roleFamily":"EventStream","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/Projection.hs","roleFamily":"Projection","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLedger/Harness.hs","roleFamily":"Harness","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayLedger (line 4)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/Domain.hs","roleFamily":"Domain","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/Codec.hs","roleFamily":"Codec","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs","roleFamily":"Transducer","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs","roleFamily":"BehaviorContract","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"hole","owner":"domain/service.keiro","path":"CheckedMappingReplay/ReplayTarget/BehaviorHoles.hs","roleFamily":"BehaviorHoles","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate behavior witnesses ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs","roleFamily":"EventStream","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/Projection.hs","roleFamily":"Projection","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayTarget/Harness.hs","roleFamily":"Harness","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: aggregate ReplayTarget (line 33)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayReaction/Input.hs","roleFamily":"Input","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: process input ReplayReaction (line 41)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayReaction/Process.hs","roleFamily":"Process","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: process reaction ReplayReaction (line 41)"}
+module {"kind":"hole","owner":"domain/service.keiro","path":"CheckedMappingReplay/ReplayReaction/ProcessHoles.hs","roleFamily":"ProcessHoles","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: process decoder ReplayReaction (line 41)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs","roleFamily":"ProcessHarness","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: process ReplayReaction (line 41)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayJobs/Queue.hs","roleFamily":"Queue","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: workqueue replay_jobs (line 57)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs","roleFamily":"QueuePolicy","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: workqueue replay_jobs (line 57)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs","roleFamily":"QueueCodec","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: workqueue replay_jobs (line 57)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs","roleFamily":"ReadModelTable","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: readmodel replay_lookup (line 98)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs","roleFamily":"QueryContract","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: readmodel replay_lookup (line 98)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs","roleFamily":"ReadModel","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: readmodel replay_lookup (line 98)"}
+module {"kind":"hole","owner":"domain/service.keiro","path":"CheckedMappingReplay/ReplayLookup/ReadModelHoles.hs","roleFamily":"ReadModelHoles","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: readmodel replay_lookup (line 98)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs","roleFamily":"ReadModelHarness","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: readmodel replay_lookup (line 98)"}
+module {"kind":"generated","owner":"domain/service.keiro","path":"Generated/CheckedMappingReplay/ReplayEvents/Contract.hs","roleFamily":"Contract","roleOwnerKind":"domain/service.keiro:","roleOwnerName":"domain/service.keiro: contract replay_events (line 109)"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.contentHashBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.ContentHash.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"ContentHash","type":"ContentHash"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.importantDaysBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.ImportantDays.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"ImportantDays","type":"ImportantDays"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.maybeContentHashBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.MaybeContentHash.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeContentHash","type":"MaybeContentHash"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.maybeLabelBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.MaybeLabel.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeLabel","type":"MaybeLabel"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.replayEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.ReplayEnvelope.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"ReplayEnvelope","type":"ReplayEnvelope"}
+mapping {"bindingSymbol":"Conformance.CheckedMappingReplay.Bindings.textLabelsBinding","bindingVersion":"1","canonicalType":"conformance.checked-mapping-replay.TextLabels.v1","mode":"structural","module":"Conformance.CheckedMappingReplay.Domain","package":"keiro-dsl","schema":1,"specName":"TextLabels","type":"TextLabels"}
+id-domain id-domain|name=RetainedId|contract=keiro-dsl/id-domain/typeid-v5-or-v7/1|prefix=retained|separator=_|json=canonical-json-text
+id-domain id-domain|name=contract:replay_events.ReplayLinked.retainedId|contract=keiro-dsl/id-domain/typeid-v5-or-v7/1|prefix=retained|separator=_|json=canonical-json-text
+nominal-equality nominal-equality|name=RetainedId|contract=keiro-dsl/nominal-equality/2|key=Text|domain=typeid-v5-or-v7-text:retained:keiro-dsl/id-domain/typeid-v5-or-v7/1|owner=generated
+binding {"kind":"binding","mappedName":"ContentHash","module":"Conformance.CheckedMappingReplay.Bindings","path":"value","schema":1,"signature":"contentHashBinding.value :: ByteString","symbol":"contentHashBinding"}
+binding {"kind":"fixtures","mappedName":"ContentHash","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"contentHashFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.ContentHash","symbol":"contentHashFixtures"}
+binding {"kind":"binding","mappedName":"ImportantDays","module":"Conformance.CheckedMappingReplay.Bindings","path":"value","schema":1,"signature":"importantDaysBinding.value :: [Day]","symbol":"importantDaysBinding"}
+binding {"kind":"fixtures","mappedName":"ImportantDays","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"importantDaysFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.ImportantDays","symbol":"importantDaysFixtures"}
+binding {"kind":"binding","mappedName":"MaybeContentHash","module":"Conformance.CheckedMappingReplay.Bindings","path":"value","schema":1,"signature":"maybeContentHashBinding.value :: Maybe (ContentHash)","symbol":"maybeContentHashBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeContentHash","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"maybeContentHashFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.MaybeContentHash","symbol":"maybeContentHashFixtures"}
+binding {"kind":"binding","mappedName":"MaybeLabel","module":"Conformance.CheckedMappingReplay.Bindings","path":"value","schema":1,"signature":"maybeLabelBinding.value :: Maybe (Text)","symbol":"maybeLabelBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeLabel","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"maybeLabelFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.MaybeLabel","symbol":"maybeLabelFixtures"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"contentHash","schema":1,"signature":"replayEnvelopeBinding.contentHash :: MaybeContentHash","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"days","schema":1,"signature":"replayEnvelopeBinding.days :: ImportantDays","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"identities","schema":1,"signature":"replayEnvelopeBinding.identities :: Map RetainedId (Text)","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"label","schema":1,"signature":"replayEnvelopeBinding.label :: MaybeLabel","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"labels","schema":1,"signature":"replayEnvelopeBinding.labels :: TextLabels","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"optionalLabels","schema":1,"signature":"replayEnvelopeBinding.optionalLabels :: Maybe (Set Text)","symbol":"replayEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":"primary","schema":1,"signature":"replayEnvelopeBinding.primary :: RetainedId","symbol":"replayEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"replayEnvelopeFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.ReplayEnvelope","symbol":"replayEnvelopeFixtures"}
+binding {"kind":"initial-value","mappedName":"ReplayEnvelope","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"initialReplayEnvelope :: Conformance.CheckedMappingReplay.Domain.ReplayEnvelope","symbol":"initialReplayEnvelope"}
+binding {"kind":"binding","mappedName":"TextLabels","module":"Conformance.CheckedMappingReplay.Bindings","path":"value","schema":1,"signature":"textLabelsBinding.value :: Set Text","symbol":"textLabelsBinding"}
+binding {"kind":"fixtures","mappedName":"TextLabels","module":"Conformance.CheckedMappingReplay.Bindings","path":null,"schema":1,"signature":"textLabelsFixtures :: FixtureCases Conformance.CheckedMappingReplay.Domain.TextLabels","symbol":"textLabelsFixtures"}
+behavior {"aggregate":"ReplayLedger","command":"ImportLegacy","evidence":"generated-authoritative","key":"behavior-v1-00d5b6d8d0fc6ef2","kind":"replay-transition","outputs":[{"command":"ImportLegacy","ownership":"generated-command-identity"}],"owner":"domain/service.keiro","source":"Empty"}
+behavior {"aggregate":"ReplayTarget","command":"Store","evidence":"generated-authoritative","key":"behavior-v1-756d75346570c343","kind":"live-transition","outputs":[{"command":"Store","ownership":"generated-command-identity"}],"owner":"domain/service.keiro","source":"Ready"}
+behavior {"aggregate":"ReplayLedger","command":"ImportLegacy","evidence":"generated-authoritative","key":"behavior-v1-9846660db9e83048","kind":"required-rejection","outputs":[],"owner":"domain/service.keiro","source":"Empty"}
+behavior {"aggregate":"ReplayLedger","command":"Record","evidence":"generated-authoritative","key":"behavior-v1-cf9c72cd877a5085","kind":"live-transition","outputs":[{"command":"Record","ownership":"generated-command-identity"},{"command":"Record","ownership":"generated-command-identity"}],"owner":"domain/service.keiro","source":"Empty"}
+behavior {"aggregate":"ReplayLedger","command":"Record","evidence":"generated-authoritative","key":"behavior-v1-e88b4f5c37ef8bf2","kind":"required-rejection","outputs":[],"owner":"domain/service.keiro","source":"Recorded"}
+behavior {"aggregate":"ReplayLedger","command":"ImportLegacy","evidence":"generated-authoritative","key":"behavior-v1-efa5614712549991","kind":"required-rejection","outputs":[],"owner":"domain/service.keiro","source":"Recorded"}
+projection-catalog-fact cursor|replay_lookup|checked-mapping-replay-writer|98
+projection-catalog-fact delivery|replay_writer|subscription|86
+projection-catalog-fact freshness|replay_lookup|wait-for-head:entire-log|98
+projection-catalog-fact group|replay_rebuild|replay_table|replay_table|81
+projection-catalog-fact owner|replay_writer|all|replay_rebuild|replay_table|10|checked-mapping-replay-writer|checked-mapping-replay-writer-v1|from-beginning|explicit|86
+projection-catalog-fact query|replay_lookup|replay_rebuild|replay_table|replay_table|98
+projection-catalog-fact supply|replay_lookup|replay_writer|replay_rebuild|replay_table|98|86
+projection-catalog-fact target|replay_table|public|checked_mapping_replay|clear||75
+query-contract-baseline v1
+query-contract {"mappedDependencies":["ContentHash","ImportantDays","MaybeContentHash","MaybeLabel","ReplayEnvelope","TextLabels"],"position":"input","readModel":"replay_lookup","typeExpression":"ReplayEnvelope"}
+query-contract {"mappedDependencies":["ContentHash","ImportantDays","MaybeContentHash","MaybeLabel","ReplayEnvelope","TextLabels"],"position":"result","readModel":"replay_lookup","typeExpression":"List ReplayEnvelope"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope .contentHash : MaybeContentHash optional : ContentHash","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope [] .contentHash : MaybeContentHash optional : ContentHash","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"ContentHash","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:ContentHash\u001fConformance.CheckedMappingReplay.Bindings.contentHashBinding\u001f1\u001fconformance.checked-mapping-replay.ContentHash.v1\u001fConformance.CheckedMappingReplay.Bindings.contentHashFixtures\u001f\u001f9a76d13837d002d3\u001frefined:base16-bytes-v1"},{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope .days : ImportantDays","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope .days : ImportantDays","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope .days : ImportantDays","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope .days : ImportantDays","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope .days : ImportantDays","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope .days : ImportantDays","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope .days : ImportantDays","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope .days : ImportantDays","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope .days : ImportantDays","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope .days : ImportantDays","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope .days : ImportantDays","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope [] .days : ImportantDays","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"ImportantDays","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:ImportantDays\u001fConformance.CheckedMappingReplay.Bindings.importantDaysBinding\u001f1\u001fconformance.checked-mapping-replay.ImportantDays.v1\u001fConformance.CheckedMappingReplay.Bindings.importantDaysFixtures\u001f\u001f53109dc5617f1504\u001fvalue:List(Day)"},{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope .contentHash : MaybeContentHash","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope .contentHash : MaybeContentHash","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope .contentHash : MaybeContentHash","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope .contentHash : MaybeContentHash","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope [] .contentHash : MaybeContentHash","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"MaybeContentHash","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:MaybeContentHash\u001fConformance.CheckedMappingReplay.Bindings.maybeContentHashBinding\u001f1\u001fconformance.checked-mapping-replay.MaybeContentHash.v1\u001fConformance.CheckedMappingReplay.Bindings.maybeContentHashFixtures\u001f\u001fb30e54ecc09e6b84\u001fvalue:Optional(Ref(ContentHash))"},{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope .label : MaybeLabel","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope .label : MaybeLabel","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope .label : MaybeLabel","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope .label : MaybeLabel","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope .label : MaybeLabel","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope .label : MaybeLabel","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope .label : MaybeLabel","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope .label : MaybeLabel","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope .label : MaybeLabel","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope .label : MaybeLabel","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope .label : MaybeLabel","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope [] .label : MaybeLabel","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"MaybeLabel","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:MaybeLabel\u001fConformance.CheckedMappingReplay.Bindings.maybeLabelBinding\u001f1\u001fconformance.checked-mapping-replay.MaybeLabel.v1\u001fConformance.CheckedMappingReplay.Bindings.maybeLabelFixtures\u001f\u001fc289b01d5d2741d7\u001fvalue:Optional(Text)"},{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope []","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"ReplayEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:ReplayEnvelope\u001fConformance.CheckedMappingReplay.Bindings.replayEnvelopeBinding\u001f1\u001fconformance.checked-mapping-replay.ReplayEnvelope.v1\u001fConformance.CheckedMappingReplay.Bindings.replayEnvelopeFixtures\u001fConformance.CheckedMappingReplay.Bindings.initialReplayEnvelope\u001fa4462543d6941d76\u001frecord:ReplayEnvelope:contentHash=contentHash,days=days,identities=identities,label=label,labels=labels,optionalLabels=optionalLabels,primary=primary"},{"consequences":[{"consumer":"ReplayLedger","kind":"consumer-build"},{"consumer":"ReplayTarget","kind":"consumer-build"},{"consumer":"workqueue:replay_jobs","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:replay_lookup:result","kind":"consumer-build"},{"aggregate":"ReplayLedger","kind":"private-event-history"},{"aggregate":"ReplayTarget","kind":"private-event-history"},{"aggregate":"ReplayLedger","kind":"snapshot-hydration"},{"aggregate":"ReplayTarget","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"replay_jobs"},{"kind":"query-api","position":"input","readModel":"replay_lookup"},{"kind":"query-api","position":"result","readModel":"replay_lookup"}],"consumerEvidence":[{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command ImportLegacy .envelope : ReplayEnvelope .labels : TextLabels","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger command Record .envelope : ReplayEnvelope .labels : TextLabels","surface":"aggregate-command"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event LegacyMappingImported .envelope : ReplayEnvelope .labels : TextLabels","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingAudited .envelope : ReplayEnvelope .labels : TextLabels","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger event MappingRecorded .envelope : ReplayEnvelope .labels : TextLabels","surface":"private-event-payload"},{"consumer":"ReplayLedger","operation":null,"path":"ReplayLedger register current : ReplayEnvelope .labels : TextLabels","surface":"snapshot-register"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget command Store .envelope : ReplayEnvelope .labels : TextLabels","surface":"aggregate-command"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget event Stored .envelope : ReplayEnvelope .labels : TextLabels","surface":"private-event-payload"},{"consumer":"ReplayTarget","operation":null,"path":"ReplayTarget register latest : ReplayEnvelope .labels : TextLabels","surface":"snapshot-register"},{"consumer":"workqueue:replay_jobs","operation":null,"path":"workqueue replay_jobs payload .envelope : ReplayEnvelope .labels : TextLabels","surface":"workqueue-payload"},{"consumer":"read-model-query:replay_lookup:input","operation":null,"path":"readmodel replay_lookup query input : ReplayEnvelope .labels : TextLabels","surface":"read-model-query-input"},{"consumer":"read-model-query:replay_lookup:result","operation":null,"path":"readmodel replay_lookup query result : ReplayEnvelope [] .labels : TextLabels","surface":"read-model-query-result"}],"consumers":["ReplayLedger","ReplayTarget","workqueue:replay_jobs","read-model-query:replay_lookup:input","read-model-query:replay_lookup:result"],"declaration":"TextLabels","identity":"structural\u001fkeiro-dsl:Conformance.CheckedMappingReplay.Domain:TextLabels\u001fConformance.CheckedMappingReplay.Bindings.textLabelsBinding\u001f1\u001fconformance.checked-mapping-replay.TextLabels.v1\u001fConformance.CheckedMappingReplay.Bindings.textLabelsFixtures\u001f\u001f68498398eaf249eb\u001fvalue:Set(Text)"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["ContentHash","ImportantDays","MaybeContentHash","MaybeLabel","ReplayEnvelope","TextLabels"]}
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.17.0.0 (language keiro-dsl 4) from context billing behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context billing generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context billing generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context billing replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context contract-declared-id structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context contract-declared-id structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from contract templates; do not edit.
+-- @generated by keiro-dsl 0.18.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-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.17.0.0 (language keiro-dsl 1) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 4) from contract emergency; do not edit.
 module Generated.HospitalCapacity.Emergency.Contract
   ( EmergencyPayload (..)
   , IncidentTransferNeedDeclaredData (..)
diff --git a/test/conformance-corpus-manifest.txt b/test/conformance-corpus-manifest.txt
--- a/test/conformance-corpus-manifest.txt
+++ b/test/conformance-corpus-manifest.txt
@@ -9,6 +9,7 @@
 
 workspace keiro-dsl/test/fixtures/workspace-nominals/service.keiro-workspace keiro-dsl/test/conformance-workspace-nominals
 workspace keiro-dsl/test/conformance-service-package/service.keiro-workspace keiro-dsl/test/conformance-service-package/runtime/src
+workspace keiro-dsl/test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace keiro-dsl/test/conformance-checked-mapping-replay
 
 # This published-language-4 fixture proves compatibility and must not be rewritten
 # when `keiro-dsl new` advances to an unreleased candidate authoring language.
@@ -16,6 +17,9 @@
 
 extra-args keiro-dsl/test/conformance-structural --codec-comparison ArtifactInfo --comparison-out keiro-dsl/test/conformance-structural/Generated/StructuralConformance/Structural/CodecCompare/ArtifactInfo.hs
 extra-args keiro-dsl/test/conformance-structural-nominals --codec-comparison TemplateState --comparison-out keiro-dsl/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/CodecCompare/TemplateState.hs
+extra-args keiro-dsl/test/conformance-bare-containers --codec-comparison MaybeText --comparison-out keiro-dsl/test/conformance-bare-containers/Generated/BareContainers/Structural/CodecCompare/MaybeText.hs
+extra-args keiro-dsl/test/conformance-calendar-days --codec-comparison MaybeLocalDay --comparison-out keiro-dsl/test/conformance-calendar-days/Generated/CalendarDays/Structural/CodecCompare/MaybeLocalDay.hs
+extra-args keiro-dsl/test/conformance-refined-base16 --codec-comparison ContentHash --comparison-out keiro-dsl/test/conformance-refined-base16/Generated/RefinedBase16/Structural/CodecCompare/ContentHash.hs
 
 # Reviewed legacy suites intentionally compile only the output surface under test.
 uncompiled-generated keiro-dsl/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs
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.17.0.0 (language keiro-dsl 5) from context transfer-routing behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from projection-catalog transfer-routing; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context transfer-routing replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural HospitalLoadRow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural TransferRouteInput; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context transfer-routing structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context transfer-routing mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context domain-outcomes behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context domain-outcomes generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context domain-outcomes replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.
 module Generated.DomainOutcomes.Reservation.Transducer
   ( reservationTransducer
   , reservationFoldFingerprint
diff --git a/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Bindings.hs b/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Bindings.hs
@@ -0,0 +1,36 @@
+module Conformance.IdAdmissionDomains.Bindings where
+
+import Conformance.IdAdmissionDomains.Domain
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import Generated.IdAdmissionDomains.Nominals (LegacyId, parseLegacyId)
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope qualified as Shape
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+uuidV5Text, uuidV7Text :: Text
+uuidV5Text = "legacy_58kj0y515rbwebzaxwzzknjqnk"
+uuidV7Text = "legacy_01h455vb4pex5vsknk084sn02q"
+
+uuidV5, uuidV7 :: LegacyId
+uuidV5 = committedId uuidV5Text
+uuidV7 = committedId uuidV7Text
+
+v5Envelope, mixedEnvelope :: IdentityEnvelope
+v5Envelope = IdentityEnvelope uuidV5 Nothing (Map.singleton uuidV5 "historical-v5")
+mixedEnvelope = IdentityEnvelope uuidV7 (Just uuidV5) (Map.fromList [(uuidV5, "historical-v5"), (uuidV7, "current-v7")])
+
+identityEnvelopeBinding :: StructuralBinding IdentityEnvelope Shape.IdentityEnvelopeShape
+identityEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \(IdentityEnvelope legacyId previousId labelsById) -> Shape.IdentityEnvelope legacyId previousId labelsById,
+      bindingFromShape = \(Shape.IdentityEnvelope legacyId previousId labelsById) -> IdentityEnvelope legacyId previousId labelsById
+    }
+
+identityEnvelopeFixtures :: FixtureCases IdentityEnvelope
+identityEnvelopeFixtures = FixtureCases (("uuid-v5", v5Envelope) :| [("mixed-v5-v7", mixedEnvelope)])
+
+committedId :: Text -> LegacyId
+committedId value = case parseLegacyId value of
+  Right parsed -> parsed
+  Left reason -> error ("invalid committed LegacyId fixture: " <> show reason)
diff --git a/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Domain.hs b/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Conformance/IdAdmissionDomains/Domain.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+
+module Conformance.IdAdmissionDomains.Domain where
+
+import Data.Map.Strict (Map)
+import Data.Proxy (Proxy)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.IdAdmissionDomains.Nominals (LegacyId)
+import Keiki.Shape (CanonicalTypeName (..))
+
+data IdentityEnvelope = IdentityEnvelope
+  { legacyId :: !LegacyId,
+    previousId :: !(Maybe LegacyId),
+    labelsById :: !(Map LegacyId Text)
+  }
+  deriving stock (Eq, Generic, Show)
+
+instance CanonicalTypeName IdentityEnvelope where
+  canonicalTypeName :: Proxy IdentityEnvelope -> Text
+  canonicalTypeName _ = "conformance.id-admission-domains.IdentityEnvelope.v1"
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs
@@ -0,0 +1,31 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context id-admission-domains behavior source map; do not edit.
+module Generated.IdAdmissionDomains.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-0bc43a8eaf58f2f2" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/id-admission-domains.keiro" 33 3)
+  "behavior-v1-54975b0ac4e921b5" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/id-admission-domains.keiro" 28 3)
+  "behavior-v1-5acf27af287654ab" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/id-admission-domains.keiro" 22 10)
+  _ -> 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-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs
@@ -0,0 +1,61 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from contract identities; do not edit.
+module Generated.IdAdmissionDomains.Identities.Contract
+  ( IdentitiesPayload (..)
+  , IdentityLinkedData (..)
+  , identityEventsTopic
+  , messageTypeOf
+  , encodeIdentitiesPayload
+  , parseIdentitiesPayload
+  ) where
+
+import Data.Aeson (Value, object, withObject, withText, (.=))
+import Data.Aeson.Types (Parser, explicitParseField, parseEither)
+import Generated.IdAdmissionDomains.Nominals qualified as Nominals
+import Generated.IdAdmissionDomains.Structural.NominalLeaves qualified as NominalLeaves
+import Data.Text (Text)
+import qualified Data.Text as T
+
+-- topic constants
+identityEventsTopic :: Text
+identityEventsTopic = "identity.events"
+
+-- the closed payload set (discriminated by "messageType")
+data IdentityLinkedData = IdentityLinkedData {legacyId :: !Nominals.LegacyId}
+  deriving stock (Eq, Show)
+
+data IdentitiesPayload
+  = IdentityLinked !IdentityLinkedData
+  deriving stock (Eq, Show)
+
+messageTypeOf :: IdentitiesPayload -> Text
+messageTypeOf = \case
+  IdentityLinked {} -> "IdentityLinked"
+
+encodeIdentitiesPayload :: IdentitiesPayload -> Value
+encodeIdentitiesPayload = \case
+  IdentityLinked payload ->
+    object
+      [ "messageType" .= ("IdentityLinked" :: Text),
+        "legacyId" .= NominalLeaves.encodeLegacyIdLeaf payload.legacyId
+      ]
+
+parseIdentitiesPayload :: Value -> Either Text IdentitiesPayload
+parseIdentitiesPayload = mapLeftText . parseEither (withObject "IdentitiesPayload" go)
+  where
+    go o = do
+      kind <- explicitParseField (withText "messageType" validateMessageType) o "messageType"
+      case kind of
+        "IdentityLinked" ->
+          IdentityLinked
+            <$> ( IdentityLinkedData
+                    <$> explicitParseField NominalLeaves.parseLegacyIdLeaf o "legacyId"
+                )
+        _ -> fail "validated message type was not handled"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+validateMessageType :: Text -> Parser Text
+validateMessageType kind
+  | kind `elem` ["IdentityLinked"] = pure kind
+  | otherwise = fail ("unknown message type " <> show kind <> "; expected one of: IdentityLinked")
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
@@ -0,0 +1,363 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.Codec (encodeIdentityLedgerEvent, parseIdentityLedgerEvent, identityLedgerCodec)
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Generated.IdAdmissionDomains.IdentityLedger.Transducer (identityLedgerTransducer)
+import Generated.IdAdmissionDomains.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 :: !IdentityLedgerVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef IdentityLedgerVertex))
+  , target :: !(Maybe IdentityLedgerVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty IdentityLedgerEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [IdentityLedgerEvent]
+      , command :: IdentityLedgerCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [IdentityLedgerEvent]
+      , observedChunk :: [IdentityLedgerEvent]
+      }
+  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 =
+  [ -- IdentityLedgerOpen x ImportLegacyIdentity: replay-only transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-0bc43a8eaf58f2f2"
+      , kind = ReplayTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = IdentityLedgerOpen
+      , commandName = "ImportLegacyIdentity"
+      , expectedEdge = (Just (K.EdgeRef IdentityLedgerOpen 1))
+      , target = Just IdentityLedgerOpen
+      , eventKinds = ["LegacyIdentityImported"]
+      }
+  , -- IdentityLedgerOpen x RecordIdentity: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-54975b0ac4e921b5"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = IdentityLedgerOpen
+      , commandName = "RecordIdentity"
+      , expectedEdge = (Just (K.EdgeRef IdentityLedgerOpen 0))
+      , target = Just IdentityLedgerOpen
+      , eventKinds = ["IdentityRecorded", "IdentityAudited"]
+      }
+  , -- IdentityLedgerOpen x ImportLegacyIdentity: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-5acf27af287654ab"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = IdentityLedgerOpen
+      , commandName = "ImportLegacyIdentity"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: IdentityLedger"
+  , "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 -> [IdentityLedgerEvent] -> IdentityLedgerCommand -> 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 -> (IdentityLedgerVertex, K.RegFile IdentityLedgerRegs) -> IdentityLedgerCommand -> 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 identityLedgerTransducer 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 -> (IdentityLedgerVertex, K.RegFile IdentityLedgerRegs) -> IdentityLedgerCommand -> 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 identityLedgerTransducer 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 identityLedgerTransducer 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 identityLedgerTransducer 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 IdentityLedgerRegs IdentityLedgerVertex IdentityLedgerEvent -> 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 -> [IdentityLedgerEvent] -> [IdentityLedgerEvent] -> 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 identityLedgerTransducer (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 IdentityLedgerVertex] -> 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 -> [IdentityLedgerEvent] -> Either BehaviorFailure (K.ReplaySuccess IdentityLedgerRegs IdentityLedgerVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [IdentityLedgerEvent] -> Either Text [IdentityLedgerEvent]
+decodeEvents = traverse (\event -> parseIdentityLedgerEvent (Codec.eventType identityLedgerCodec event) (encodeIdentityLedgerEvent event))
+
+commandKind :: IdentityLedgerCommand -> Text
+commandKind command = case command of
+  RecordIdentity _ -> "RecordIdentity"
+  ImportLegacyIdentity _ -> "ImportLegacyIdentity"
+
+eventKind :: IdentityLedgerEvent -> Text
+eventKind event = case Codec.eventType identityLedgerCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile IdentityLedgerRegs -> K.RegFile IdentityLedgerRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current)
+
+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-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
@@ -0,0 +1,143 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.Codec (
+    identityLedgerCodec,
+    parseIdentityLedgerEvent,
+    encodeIdentityLedgerEvent,
+    encodeIdentityEnvelopeMapped,
+    decodeIdentityEnvelopeMapped,
+) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Generated.IdAdmissionDomains.Nominals (legacyIdText)
+import Generated.IdAdmissionDomains.Nominals.Internal (unsafeLegacyIdFromLegacyText)
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.:), (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Generated.IdAdmissionDomains.Structural.NominalLeaves (encodeLegacyIdLeaf, parseLegacyIdLeaf)
+import Generated.IdAdmissionDomains.Structural.NominalLeaves (parseLegacyIdLeafKey, renderLegacyIdLeafKey)
+import Conformance.IdAdmissionDomains.Bindings qualified as Bindings
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope)
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope qualified as ShapeIdentityEnvelope
+
+
+
+encodeIdentityEnvelopeMapped :: IdentityEnvelope -> Value
+encodeIdentityEnvelopeMapped = encodeIdentityEnvelopeShape . bindingToShape Bindings.identityEnvelopeBinding
+
+parseIdentityEnvelopeMapped :: Value -> Parser IdentityEnvelope
+parseIdentityEnvelopeMapped value = bindingFromShape Bindings.identityEnvelopeBinding <$> parseIdentityEnvelopeShape value
+
+decodeIdentityEnvelopeMapped :: Value -> Either Text IdentityEnvelope
+decodeIdentityEnvelopeMapped = mapLeftText . parseEither parseIdentityEnvelopeMapped
+
+encodeIdentityEnvelopeShape :: ShapeIdentityEnvelope.IdentityEnvelopeShape -> Value
+encodeIdentityEnvelopeShape shape =
+  object
+      [ "legacyId" .= encodeLegacyIdLeaf shape.legacyId
+      , "previousId" .= maybe Null (\item0 -> encodeLegacyIdLeaf item0) (shape.previousId)
+      , "labelsById" .= Object (KeyMap.fromList [(Key.fromText (renderLegacyIdLeafKey key0), toJSON (item0)) | (key0, item0) <- Map.toList (shape.labelsById)])
+      ]
+
+parseIdentityEnvelopeShape :: Value -> Parser ShapeIdentityEnvelope.IdentityEnvelopeShape
+parseIdentityEnvelopeShape = withObject "IdentityEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "IdentityEnvelope" ["legacyId", "previousId", "labelsById"] objectValue
+  ShapeIdentityEnvelope.IdentityEnvelope
+    <$> explicitParseField (parseLegacyIdLeaf) objectValue "legacyId"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseLegacyIdLeaf) other0) objectValue "previousId"
+    <*> explicitParseField (\value0 -> withObject "Map[LegacyId]" (\object0 -> Map.fromList <$> traverse (\(rawKey0, item0) -> do key0 <- parseLegacyIdLeafKey (Key.toText rawKey0) <?> Key rawKey0; parsedItem0 <- (parseJSON) item0 <?> Key rawKey0; pure (key0, parsedItem0)) (KeyMap.toList object0)) value0) objectValue "labelsById"
+
+identityLedgerEventTypes :: NonEmpty EventType
+identityLedgerEventTypes = EventType "IdentityRecorded" :| [EventType "IdentityAudited", EventType "LegacyIdentityImported"]
+
+identityLedgerCodec :: Codec IdentityLedgerEvent
+identityLedgerCodec =
+  Codec
+    { eventTypes = identityLedgerEventTypes
+    , eventType = \case
+        IdentityRecorded{} -> EventType "IdentityRecorded"
+        IdentityAudited{} -> EventType "IdentityAudited"
+        LegacyIdentityImported{} -> EventType "LegacyIdentityImported"
+    , schemaVersion = 1
+    , encode = encodeIdentityLedgerEvent
+    , decode = parseIdentityLedgerEvent
+    , upcasters = []
+    }
+
+encodeIdentityLedgerEvent :: IdentityLedgerEvent -> Value
+encodeIdentityLedgerEvent = \case
+  IdentityRecorded payload ->
+    object
+      [ "kind" .= ("IdentityRecorded" :: Text)
+      , "legacyId" .= legacyIdText payload.legacyId
+      , "envelope" .= encodeIdentityEnvelopeMapped payload.envelope
+      ]
+  IdentityAudited payload ->
+    object
+      [ "kind" .= ("IdentityAudited" :: Text)
+      , "legacyId" .= legacyIdText payload.legacyId
+      , "envelope" .= encodeIdentityEnvelopeMapped payload.envelope
+      ]
+  LegacyIdentityImported payload ->
+    object
+      [ "kind" .= ("LegacyIdentityImported" :: Text)
+      , "legacyId" .= legacyIdText payload.legacyId
+      , "envelope" .= encodeIdentityEnvelopeMapped payload.envelope
+      ]
+
+parseIdentityLedgerEvent :: EventType -> Value -> Either Text IdentityLedgerEvent
+parseIdentityLedgerEvent (EventType tag) = mapLeftText . parseEither (withObject "IdentityLedgerEvent" go)
+  where
+    go o = do
+      case tag of
+        "IdentityRecorded" ->
+          IdentityRecorded
+            <$> ( IdentityRecordedData
+                    <$> (unsafeLegacyIdFromLegacyText <$> o .: "legacyId")
+                    <*> explicitParseField parseIdentityEnvelopeMapped o "envelope"
+                )
+        "IdentityAudited" ->
+          IdentityAudited
+            <$> ( IdentityAuditedData
+                    <$> (unsafeLegacyIdFromLegacyText <$> o .: "legacyId")
+                    <*> explicitParseField parseIdentityEnvelopeMapped o "envelope"
+                )
+        "LegacyIdentityImported" ->
+          LegacyIdentityImported
+            <$> ( LegacyIdentityImportedData
+                    <$> (unsafeLegacyIdFromLegacyText <$> o .: "legacyId")
+                    <*> explicitParseField parseIdentityEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes identityLedgerEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.Domain where
+
+import Data.Proxy (Proxy (..))
+import GHC.Generics (Generic)
+import Keiki.Core (RegFile (..))
+import Generated.IdAdmissionDomains.Nominals (LegacyId, parseLegacyId)
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data IdentityLedgerVertex = IdentityLedgerOpen
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+
+data RecordIdentityData = RecordIdentityData
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ImportLegacyIdentityData = ImportLegacyIdentityData
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data IdentityLedgerCommand = RecordIdentity !RecordIdentityData
+  | ImportLegacyIdentity !ImportLegacyIdentityData
+  deriving stock (Generic, Eq, Show)
+
+data IdentityRecordedData = IdentityRecordedData
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data IdentityAuditedData = IdentityAuditedData
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LegacyIdentityImportedData = LegacyIdentityImportedData
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data IdentityLedgerEvent = IdentityRecorded !IdentityRecordedData
+  | IdentityAudited !IdentityAuditedData
+  | LegacyIdentityImported !LegacyIdentityImportedData
+  deriving stock (Generic, Eq, Show)
+
+type IdentityLedgerRegs =
+  '[ '("current", LegacyId)
+   ]
+
+initialIdentityLedgerRegs :: RegFile IdentityLedgerRegs
+initialIdentityLedgerRegs =
+  RCons (Proxy @"current") (case parseLegacyId "legacy_01h455vb4pex5vsknk084sn02q" of Right parsed -> parsed; Left _ -> error "generated valid ID sample failed to parse") RNil
+
+$(deriveAggregateCtorsAll ''IdentityLedgerCommand ''IdentityLedgerRegs)
+
+
+
+$(deriveWireCtorsAll ''IdentityLedgerEvent)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
@@ -0,0 +1,49 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.EventStream
+  ( identityLedgerCategory
+  , identityLedgerCommandCategory
+  , identityLedgerEventStream
+  , identityLedgerEventStreamDef
+  , IdentityLedgerEventStream
+  , IdentityLedgerEventStreamDef
+  ) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Generated.IdAdmissionDomains.IdentityLedger.Codec (identityLedgerCodec)
+import Generated.IdAdmissionDomains.IdentityLedger.Transducer (identityLedgerTransducer)
+import Keiki.Core (HsPred)
+import Keiro.EventStream (EventStream (..), SnapshotPolicy (..))
+import Keiro.EventStream.Validate (ValidatedEventStream, mkEventStreamOrThrow)
+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.
+identityLedgerCategory :: Stream.StreamCategory IdentityLedgerEventStreamDef
+identityLedgerCategory = Stream.categoryUnsafe "identityLedger"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+identityLedgerCommandCategory :: Stream.StreamCategory IdentityLedgerCommand
+identityLedgerCommandCategory = Stream.categoryUnsafe "identityLedger"
+
+type IdentityLedgerEventStreamDef =
+  EventStream (HsPred IdentityLedgerRegs IdentityLedgerCommand) IdentityLedgerRegs IdentityLedgerVertex IdentityLedgerCommand IdentityLedgerEvent
+
+type IdentityLedgerEventStream =
+  ValidatedEventStream (HsPred IdentityLedgerRegs IdentityLedgerCommand) IdentityLedgerRegs IdentityLedgerVertex IdentityLedgerCommand IdentityLedgerEvent
+
+identityLedgerEventStreamDef :: IdentityLedgerEventStreamDef
+identityLedgerEventStreamDef =
+  EventStream
+    { transducer = identityLedgerTransducer,
+      initialState = IdentityLedgerOpen,
+      initialRegisters = initialIdentityLedgerRegs,
+      eventCodec = identityLedgerCodec,
+      resolveStreamName = Stream.streamName,
+      snapshotPolicy = Never,
+      stateCodec = Nothing
+    }
+
+identityLedgerEventStream :: IdentityLedgerEventStream
+identityLedgerEventStream =
+  mkEventStreamOrThrow "IdentityLedger" identityLedgerEventStreamDef
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.Harness (harnessAssertions) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Generated.IdAdmissionDomains.IdentityLedger.Codec (encodeIdentityLedgerEvent, parseIdentityLedgerEvent, identityLedgerCodec, encodeIdentityEnvelopeMapped, decodeIdentityEnvelopeMapped)
+import Generated.IdAdmissionDomains.IdentityLedger.Transducer (identityLedgerTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+import Keiro.Codec (eventType)
+import Generated.IdAdmissionDomains.Nominals (LegacyId, parseLegacyId)
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as AesonKey
+import Data.Aeson.KeyMap qualified as AesonKeyMap
+import Data.Either (isLeft, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.IdAdmissionDomains.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 identityLedgerTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: IdentityRecorded", roundTrips sampleEventIdentityRecorded)
+  , ("golden round-trip: IdentityAudited", roundTrips sampleEventIdentityAudited)
+  , ("golden round-trip: LegacyIdentityImported", roundTrips sampleEventLegacyIdentityImported)
+  , ("accepts RecordIdentity from IdentityLedgerOpen", acceptRecordIdentity)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayRecordIdentity
+
+roundTrips :: IdentityLedgerEvent -> Bool
+roundTrips e = parseIdentityLedgerEvent (eventType identityLedgerCodec e) (encodeIdentityLedgerEvent e) == Right e
+
+sampleLegacyId :: LegacyId
+sampleLegacyId =
+  case parseLegacyId "legacy_01h455vb4pex5vsknk084sn02q" of
+    Right parsed -> parsed
+    Left problem -> error (show problem)
+
+sampleEventIdentityRecorded :: IdentityLedgerEvent
+sampleEventIdentityRecorded = IdentityRecorded (IdentityRecordedData sampleLegacyId (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))
+
+sampleEventIdentityAudited :: IdentityLedgerEvent
+sampleEventIdentityAudited = IdentityAudited (IdentityAuditedData sampleLegacyId (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))
+
+sampleEventLegacyIdentityImported :: IdentityLedgerEvent
+sampleEventLegacyIdentityImported = LegacyIdentityImported (LegacyIdentityImportedData sampleLegacyId (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))
+
+acceptRecordIdentity :: Bool
+acceptRecordIdentity =
+  case step identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) (RecordIdentity (RecordIdentityData sampleLegacyId (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == IdentityLedgerOpen
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayRecordIdentity :: [(String, Bool)]
+forwardReplayRecordIdentity =
+  case step identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) (RecordIdentity (RecordIdentityData sampleLegacyId (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseIdentityLedgerEvent (eventType identityLedgerCodec event) (encodeIdentityLedgerEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              ]
+  where
+    prefix = "forward/replay equality: RecordIdentity from IdentityLedgerOpen -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ identityRecordedEnvelopeAssertions
+    , identityAuditedEnvelopeAssertions
+    , legacyIdentityImportedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+identityRecordedEnvelopeAssertions :: [(String, Bool)]
+identityRecordedEnvelopeAssertions =
+  [ ("mapped codec round-trip: IdentityRecorded/envelope/" <> T.unpack label, roundTrips (IdentityRecorded (IdentityRecordedData sampleLegacyId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)
+  ]
+
+identityAuditedEnvelopeAssertions :: [(String, Bool)]
+identityAuditedEnvelopeAssertions =
+  [ ("mapped codec round-trip: IdentityAudited/envelope/" <> T.unpack label, roundTrips (IdentityAudited (IdentityAuditedData sampleLegacyId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)
+  ]
+
+legacyIdentityImportedEnvelopeAssertions :: [(String, Bool)]
+legacyIdentityImportedEnvelopeAssertions =
+  [ ("mapped codec round-trip: LegacyIdentityImported/envelope/" <> T.unpack label, roundTrips (LegacyIdentityImported (LegacyIdentityImportedData sampleLegacyId mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.id-admission-domains.IdentityEnvelope.v1/previousId", case decodeIdentityEnvelopeMapped (deleteObjectField "previousId" (encodeIdentityEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "previousId" (encodeIdentityEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.id-admission-domains.IdentityEnvelope.v1/previousId", isRight (decodeIdentityEnvelopeMapped (insertObjectField "previousId" Aeson.Null (encodeIdentityEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.id-admission-domains.IdentityEnvelope.v1", all (\(_, value) -> isLeft (decodeIdentityEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeIdentityEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.
+module Generated.IdAdmissionDomains.IdentityLedger.Transducer
+  ( identityLedgerTransducer
+  , identityLedgerFoldFingerprint
+  , BehaviorOwnership (..)
+  , identityLedgerPredicateVerifications
+  ) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Data.Text (Text)
+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 ((=:))
+
+identityLedgerTransducer
+  :: SymTransducer
+       (HsPred IdentityLedgerRegs IdentityLedgerCommand)
+       IdentityLedgerRegs
+       IdentityLedgerVertex
+       IdentityLedgerCommand
+       IdentityLedgerEvent
+identityLedgerTransducer =
+  B.buildTransducer IdentityLedgerOpen initialIdentityLedgerRegs isTerminal do
+    B.from IdentityLedgerOpen do
+      B.onCmd inCtorRecordIdentity $ \d -> B.do
+        B.slot @"current" =: d.legacyId
+        B.emit wireIdentityRecorded (IdentityRecordedTermFields
+          { legacyId = d.legacyId
+          , envelope = d.envelope
+          })
+        B.emit wireIdentityAudited (IdentityAuditedTermFields
+          { legacyId = d.legacyId
+          , envelope = d.envelope
+          })
+        B.goto IdentityLedgerOpen
+      B.onCmd inCtorImportLegacyIdentity $ \d -> B.do
+        B.replayOnly
+        B.slot @"current" =: d.legacyId
+        B.emit wireLegacyIdentityImported (LegacyIdentityImportedTermFields
+          { legacyId = d.legacyId
+          , envelope = d.envelope
+          })
+        B.goto IdentityLedgerOpen
+ where
+  isTerminal = \case
+
+    _ -> False
+
+identityLedgerFoldFingerprint :: Text
+identityLedgerFoldFingerprint = "ad6ef591515ea2fb83140c5d44bc7576"
+
+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.
+identityLedgerPredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+identityLedgerPredicateVerifications = sequence
+  [ verifyTransition "transition1OpenRecordIdentity" GeneratedOwned IdentityLedgerOpen 0
+  , verifyTransition "transition2OpenImportLegacyIdentity" GeneratedOwned IdentityLedgerOpen 1
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut identityLedgerTransducer 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-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs
@@ -0,0 +1,89 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit.
+module Generated.IdAdmissionDomains.IdentityWork.Queue
+  ( IdentityWork (..)
+  , encodeIdentityWork
+  , parseIdentityWork
+  , encodeIdentityEnvelopeMapped
+  , decodeIdentityEnvelopeMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Generated.IdAdmissionDomains.Structural.NominalLeaves (encodeLegacyIdLeaf, parseLegacyIdLeaf)
+import Generated.IdAdmissionDomains.Structural.NominalLeaves (parseLegacyIdLeafKey, renderLegacyIdLeafKey)
+import Conformance.IdAdmissionDomains.Bindings qualified as Bindings
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope)
+import Generated.IdAdmissionDomains.Nominals (LegacyId)
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope qualified as ShapeIdentityEnvelope
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "identity_work"
+queueDlq = "identity_work_dlq"
+queueTable = "pgmq.q_identity_work"
+
+data IdentityWork = IdentityWork
+  { legacyId :: !LegacyId
+  , envelope :: !IdentityEnvelope
+  }
+  deriving stock (Eq, Show)
+
+encodeIdentityEnvelopeMapped :: IdentityEnvelope -> Value
+encodeIdentityEnvelopeMapped = encodeIdentityEnvelopeShape . bindingToShape Bindings.identityEnvelopeBinding
+
+parseIdentityEnvelopeMapped :: Value -> Parser IdentityEnvelope
+parseIdentityEnvelopeMapped value = bindingFromShape Bindings.identityEnvelopeBinding <$> parseIdentityEnvelopeShape value
+
+decodeIdentityEnvelopeMapped :: Value -> Either Text IdentityEnvelope
+decodeIdentityEnvelopeMapped = mapLeftText . parseEither parseIdentityEnvelopeMapped
+
+encodeIdentityEnvelopeShape :: ShapeIdentityEnvelope.IdentityEnvelopeShape -> Value
+encodeIdentityEnvelopeShape shape =
+  object
+      [ "legacyId" .= encodeLegacyIdLeaf shape.legacyId
+      , "previousId" .= maybe Null (\item0 -> encodeLegacyIdLeaf item0) (shape.previousId)
+      , "labelsById" .= Object (KeyMap.fromList [(Key.fromText (renderLegacyIdLeafKey key0), toJSON (item0)) | (key0, item0) <- Map.toList (shape.labelsById)])
+      ]
+
+parseIdentityEnvelopeShape :: Value -> Parser ShapeIdentityEnvelope.IdentityEnvelopeShape
+parseIdentityEnvelopeShape = withObject "IdentityEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "IdentityEnvelope" ["legacyId", "previousId", "labelsById"] objectValue
+  ShapeIdentityEnvelope.IdentityEnvelope
+    <$> explicitParseField (parseLegacyIdLeaf) objectValue "legacyId"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseLegacyIdLeaf) other0) objectValue "previousId"
+    <*> explicitParseField (\value0 -> withObject "Map[LegacyId]" (\object0 -> Map.fromList <$> traverse (\(rawKey0, item0) -> do key0 <- parseLegacyIdLeafKey (Key.toText rawKey0) <?> Key rawKey0; parsedItem0 <- (parseJSON) item0 <?> Key rawKey0; pure (key0, parsedItem0)) (KeyMap.toList object0)) value0) objectValue "labelsById"
+
+encodeIdentityWork :: IdentityWork -> Value
+encodeIdentityWork payload =
+  object
+    [ "legacy_id" .= encodeLegacyIdLeaf payload.legacyId
+    , "envelope" .= encodeIdentityEnvelopeMapped payload.envelope
+    ]
+
+parseIdentityWork :: Value -> Either Text IdentityWork
+parseIdentityWork = mapLeftText . parseEither (withObject "IdentityWork" go)
+  where
+    go objectValue = IdentityWork <$> explicitParseField (parseLegacyIdLeaf) objectValue "legacy_id" <*> explicitParseField (parseIdentityEnvelopeMapped) objectValue "envelope"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.IdAdmissionDomains.IdentityWork.QueueCodec (identityWorkPayloadCodec, identityWorkJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.IdAdmissionDomains.IdentityWork.Queue (IdentityWork, encodeIdentityWork, parseIdentityWork)
+
+identityWorkPayloadCodec :: Codec IdentityWork
+identityWorkPayloadCodec =
+  Codec
+    { eventTypes = EventType "IdentityWork" :| []
+    , eventType = \_ -> EventType "IdentityWork"
+    , schemaVersion = 1
+    , encode = encodeIdentityWork
+    , decode = \_ -> parseIdentityWork
+    , upcasters = []
+    }
+
+identityWorkJobCodec :: JobCodec IdentityWork
+identityWorkJobCodec = keiroJobCodec identityWorkPayloadCodec
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit.
+module Generated.IdAdmissionDomains.IdentityWork.QueuePolicy
+  ( IdentityWorkOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data IdentityWorkOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: IdentityWorkOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context id-admission-domains generated nominal declarations; do not edit.
+module Generated.IdAdmissionDomains.Nominals
+  ( LegacyId
+  , parseLegacyId
+  , mkLegacyId
+  , legacyIdText
+  ) where
+
+import Generated.IdAdmissionDomains.Nominals.Internal (LegacyId, mkLegacyId, parseLegacyId, legacyIdText)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs
@@ -0,0 +1,40 @@
+-- @generated by keiro-dsl 0.18.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
+  , mkLegacyId
+  , legacyIdText
+  , unsafeLegacyIdFromLegacyText
+  ) where
+
+import Data.Aeson (FromJSON (..), ToJSON (..), withText)
+import Data.Text (Text)
+import Data.Text qualified as T
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName)
+import Keiro.Codec.IdDomain (typeIdV5OrV7Domain, validateIdDomainText)
+
+newtype LegacyId = LegacyId Text
+  deriving stock (Generic, Eq, Ord, Show)
+
+instance CanonicalTypeName LegacyId
+
+instance ToJSON LegacyId where
+  toJSON = toJSON . legacyIdText
+
+instance FromJSON LegacyId where
+  parseJSON = withText "LegacyId" (either (fail . T.unpack) pure . parseLegacyId)
+
+parseLegacyId :: Text -> Either Text LegacyId
+parseLegacyId input = case validateIdDomainText (typeIdV5OrV7Domain "legacy") input of
+  Left reason -> Left (T.pack (show reason))
+  Right () -> Right (LegacyId input)
+
+mkLegacyId :: Text -> Either Text LegacyId
+mkLegacyId = parseLegacyId
+
+legacyIdText :: LegacyId -> Text
+legacyIdText (LegacyId value) = value
+
+unsafeLegacyIdFromLegacyText :: Text -> LegacyId
+unsafeLegacyIdFromLegacyText = LegacyId
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.IdAdmissionDomains.ReplayAudit (auditTargets) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.EventStream qualified as IdentityLedger
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = IdentityLedger.identityLedgerEventStream
+        , category = Stream.categoryText IdentityLedger.identityLedgerCategory
+        , mkStream = streamInCategory (Stream.categoryText IdentityLedger.identityLedgerCategory)
+        }
+  ]
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
@@ -0,0 +1,24 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Aeson.Types (Parser)
+import Data.Text (Text)
+import Data.Text qualified as T
+import Generated.IdAdmissionDomains.Nominals qualified as Nominals
+
+encodeLegacyIdLeaf :: Nominals.LegacyId -> Value
+encodeLegacyIdLeaf = String . Nominals.legacyIdText
+{-# NOINLINE encodeLegacyIdLeaf #-}
+
+parseLegacyIdLeaf :: Value -> Parser Nominals.LegacyId
+parseLegacyIdLeaf = withText "LegacyId" (either (fail . T.unpack) pure . Nominals.parseLegacyId)
+{-# NOINLINE parseLegacyIdLeaf #-}
+
+renderLegacyIdLeafKey :: Nominals.LegacyId -> Text
+renderLegacyIdLeafKey = Nominals.legacyIdText
+{-# NOINLINE renderLegacyIdLeafKey #-}
+
+parseLegacyIdLeafKey :: Text -> Parser Nominals.LegacyId
+parseLegacyIdLeafKey = either (fail . T.unpack) pure . Nominals.parseLegacyId
+{-# NOINLINE parseLegacyIdLeafKey #-}
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs
@@ -0,0 +1,14 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.IdAdmissionDomains.Nominals qualified as Nominals
+
+data IdentityEnvelopeShape = IdentityEnvelope
+  { legacyId :: !Nominals.LegacyId
+  , previousId :: !(Maybe Nominals.LegacyId)
+  , labelsById :: !(Map Nominals.LegacyId Text)
+  }
+  deriving stock (Eq, Generic, Show)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs
@@ -0,0 +1,61 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context id-admission-domains structural conformance; do not edit.
+module Generated.IdAdmissionDomains.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Types qualified as AesonTypes
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Core (fieldWitnessAgrees)
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Generated.IdAdmissionDomains.StructuralProjections qualified as StructuralProjections
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope (IdentityEnvelopeShape(previousId))
+import Conformance.IdAdmissionDomains.Bindings qualified as Bindings
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope)
+import Generated.IdAdmissionDomains.Nominals qualified as Nominals
+import Generated.IdAdmissionDomains.Structural.NominalLeaves qualified as NominalLeaves
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope qualified as ShapeIdentityEnvelope
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ identityEnvelopeBindingAssertions
+    , [("generated nominal canonical text: conformance.id-admission-domains.IdentityEnvelope.v1/LegacyId", all (\(_, value) -> (case bindingToShape Bindings.identityEnvelopeBinding value of ShapeIdentityEnvelope.IdentityEnvelope field0_0 field0_1 field0_2 -> ((NominalLeaves.encodeLegacyIdLeaf (field0_0) == Aeson.String (Nominals.legacyIdText (field0_0)) && AesonTypes.parseEither NominalLeaves.parseLegacyIdLeaf (NominalLeaves.encodeLegacyIdLeaf (field0_0)) == Right (field0_0))) && (maybe True (\item1 -> (NominalLeaves.encodeLegacyIdLeaf (item1) == Aeson.String (Nominals.legacyIdText (item1)) && AesonTypes.parseEither NominalLeaves.parseLegacyIdLeaf (NominalLeaves.encodeLegacyIdLeaf (item1)) == Right (item1))) (field0_1)) && ((all (\key1 -> (NominalLeaves.encodeLegacyIdLeaf (key1) == Aeson.String (Nominals.legacyIdText (key1)) && AesonTypes.parseEither NominalLeaves.parseLegacyIdLeaf (NominalLeaves.encodeLegacyIdLeaf (key1)) == Right (key1))) (Map.keys (field0_2)))))) (NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)))]
+    , [("fixture coverage: conformance.id-admission-domains.IdentityEnvelope.v1", coverageIdentityEnvelope)]
+    , 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)
+
+identityEnvelopeBindingAssertions :: [(String, Bool)]
+identityEnvelopeBindingAssertions =
+  ("fixture labels: conformance.id-admission-domains.IdentityEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.id-admission-domains.IdentityEnvelope.v1", canonicalTypeName (Proxy @IdentityEnvelope) == "conformance.id-admission-domains.IdentityEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.id-admission-domains.IdentityEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.identityEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.id-admission-domains.IdentityEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.identityEnvelopeBinding (bindingToShape Bindings.identityEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.identityEnvelopeFixtures
+
+coverageIdentityEnvelope :: Bool
+coverageIdentityEnvelope = any (isNothing . (.previousId)) shapes && any (isJust . (.previousId)) shapes
+  where
+    shapes = map (bindingToShape Bindings.identityEnvelopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures))
+
+structuralProjectionAssertions :: [(String, Bool)]
+structuralProjectionAssertions =
+  [ ("projection witness agreement: conformance.id-admission-domains.IdentityEnvelope.v1/legacyId", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.identityEnvelopeLegacyIdWitness (\referenceOwner -> StructuralProjections.identityEnvelopeLegacyIdGet referenceOwner) owner) (NonEmpty.toList (fixtureCases Bindings.identityEnvelopeFixtures)))
+  ]
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE TypeFamilies #-}
+-- @generated by keiro-dsl 0.18.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.
+module Generated.IdAdmissionDomains.StructuralProjections
+  ( identityEnvelopeLegacyIdWitness
+  , identityEnvelopeLegacyIdGet
+  , identityEnvelopeLegacyIdRawGet
+  ) where
+
+import Data.Text (Text)
+import Data.List.NonEmpty qualified as NonEmpty
+import Keiro.Codec.IdDomain (idDomainTextPattern, typeIdV5OrV7Domain)
+import Keiro.Codec.Structural (bindingToShape, bindingFromShape, fixtureCases)
+import Keiki.Core (FieldProjection (..), FieldWitness, ExactFieldProjection (..), exactFieldWitness)
+import Keiki.ProjectionDomain (TextPattern, textProjectionDomain)
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope (IdentityEnvelopeShape(legacyId))
+import Conformance.IdAdmissionDomains.Bindings qualified as Bindings
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope)
+import Generated.IdAdmissionDomains.Nominals qualified as Nominals
+import Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope qualified as ShapeIdentityEnvelope
+
+identityEnvelopeLegacyIdProjectionDomainPattern :: TextPattern
+identityEnvelopeLegacyIdProjectionDomainPattern = either (error . show) id (idDomainTextPattern (typeIdV5OrV7Domain "legacy"))
+
+data IdentityEnvelopeLegacyIdProjection
+
+identityEnvelopeLegacyIdRawGet :: IdentityEnvelope -> Nominals.LegacyId
+identityEnvelopeLegacyIdRawGet owner = (bindingToShape Bindings.identityEnvelopeBinding owner).legacyId
+
+identityEnvelopeLegacyIdGet :: IdentityEnvelope -> Text
+identityEnvelopeLegacyIdGet owner = Nominals.legacyIdText (identityEnvelopeLegacyIdRawGet owner)
+
+instance FieldProjection IdentityEnvelopeLegacyIdProjection where
+  type FieldName IdentityEnvelopeLegacyIdProjection = "/legacyId"
+  type FieldOwner IdentityEnvelopeLegacyIdProjection = IdentityEnvelope
+  type FieldResult IdentityEnvelopeLegacyIdProjection = Text
+  fieldShapeId _ = "conformance.id-admission-domains.IdentityEnvelope.v1"
+  projectFieldValue _ = identityEnvelopeLegacyIdGet
+
+instance ExactFieldProjection IdentityEnvelopeLegacyIdProjection where
+  fieldProjectionDomain _ = textProjectionDomain identityEnvelopeLegacyIdProjectionDomainPattern
+  reconstructFieldOwner _ value = do
+    fieldValue <- either (const Nothing) Just (Nominals.parseLegacyId value)
+    let baseShape = bindingToShape Bindings.identityEnvelopeBinding (snd (NonEmpty.head (fixtureCases Bindings.identityEnvelopeFixtures)))
+    pure (bindingFromShape Bindings.identityEnvelopeBinding (case baseShape of ShapeIdentityEnvelope.IdentityEnvelope _ projectionField0_1 projectionField0_2 -> ShapeIdentityEnvelope.IdentityEnvelope fieldValue projectionField0_1 projectionField0_2))
+
+identityEnvelopeLegacyIdWitness :: FieldWitness IdentityEnvelopeLegacyIdProjection
+identityEnvelopeLegacyIdWitness = exactFieldWitness @IdentityEnvelopeLegacyIdProjection
diff --git a/test/conformance-id-admission-domains/IdAdmissionDomains/IdentityLedger/BehaviorHoles.hs b/test/conformance-id-admission-domains/IdAdmissionDomains/IdentityLedger/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/IdAdmissionDomains/IdentityLedger/BehaviorHoles.hs
@@ -0,0 +1,9 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module IdAdmissionDomains.IdentityLedger.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.IdAdmissionDomains.IdentityLedger.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-723df676736b6f6c") -- IdentityLedgerOpen x RecordIdentity: live transition
+  ]
diff --git a/test/conformance-id-admission-domains/Main.hs b/test/conformance-id-admission-domains/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/Main.hs
@@ -0,0 +1,109 @@
+module Main (main) where
+
+import Conformance.IdAdmissionDomains.Bindings qualified as Bindings
+import Conformance.IdAdmissionDomains.Domain (IdentityEnvelope (..))
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (parseEither)
+import Data.Either (isLeft)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import Data.Text qualified as T
+import Generated.IdAdmissionDomains.Identities.Contract
+import Generated.IdAdmissionDomains.IdentityLedger.Codec
+import Generated.IdAdmissionDomains.IdentityLedger.Domain
+import Generated.IdAdmissionDomains.IdentityLedger.Harness (harnessAssertions)
+import Generated.IdAdmissionDomains.IdentityLedger.Transducer (identityLedgerTransducer)
+import Generated.IdAdmissionDomains.IdentityWork.Queue
+import Generated.IdAdmissionDomains.Nominals (LegacyId, legacyIdText, parseLegacyId)
+import Generated.IdAdmissionDomains.Structural.NominalLeaves (parseLegacyIdLeafKey, renderLegacyIdLeafKey)
+import Generated.IdAdmissionDomains.StructuralConformance (structuralConformanceAssertions)
+import Keiki.Core (applyEventsEither, (!))
+import Keiro.Codec (EventType (..), eventType)
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  let event = IdentityRecorded (IdentityRecordedData Bindings.uuidV5 Bindings.mixedEnvelope)
+      encodedEvent = encodeIdentityLedgerEvent event
+      contractPayload = IdentityLinked (IdentityLinkedData Bindings.uuidV5)
+      queuePayload = IdentityWork Bindings.uuidV7 Bindings.mixedEnvelope
+      assertions =
+        structuralConformanceAssertions
+          <> harnessAssertions
+          <> [ ("generated admission accepts committed UUIDv5", (legacyIdText <$> parseLegacyId Bindings.uuidV5Text) == Right Bindings.uuidV5Text),
+               ("generated admission accepts committed UUIDv7", (legacyIdText <$> parseLegacyId Bindings.uuidV7Text) == Right Bindings.uuidV7Text),
+               ("generated aggregate codec preserves mixed UUID history", parseIdentityLedgerEvent (eventType identityLedgerCodec event) encodedEvent == Right event),
+               ("serialized UUIDv5 and UUIDv7 multi-event history replays", serializedMultiEventReplay),
+               ("replay-only UUIDv5 history preserves the admitted ID", replayOnlyAdmission),
+               ("a first event that loses its admitted ID is rejected", headInformationLossRejected),
+               ("identifier map keys reconstruct their exact owners", keyRoundTrip),
+               ("public contract preserves UUIDv5", parseIdentitiesPayload (encodeIdentitiesPayload contractPayload) == Right contractPayload),
+               ("queue payload preserves nested and direct IDs", parseIdentityWork (encodeIdentityWork queuePayload) == Right queuePayload),
+               ("implicit wrong versions remain rejected", isRejected (parseLegacyId "legacy_00041061050r3gg28a1c60t3gf")),
+               ("wrong prefixes remain rejected", isRejected (parseLegacyId "other_58kj0y515rbwebzaxwzzknjqnk"))
+             ]
+  forM_ assertions $ \(label, passed) -> putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+keyRoundTrip :: Bool
+keyRoundTrip =
+  renderLegacyIdLeafKey Bindings.uuidV5 == Bindings.uuidV5Text
+    && parseEither (const (parseLegacyIdLeafKey Bindings.uuidV5Text)) () == Right Bindings.uuidV5
+    && Map.lookup Bindings.uuidV5 (Bindings.mixedEnvelope.labelsById) == Just "historical-v5"
+
+isRejected :: Either problem value -> Bool
+isRejected = either (const True) (const False)
+
+serializedMultiEventReplay :: Bool
+serializedMultiEventReplay =
+  case replayRawIdentityChain [Bindings.uuidV5Text, Bindings.uuidV7Text] of
+    Left _ -> False
+    Right (vertex, current) -> vertex == IdentityLedgerOpen && current == Bindings.uuidV7
+
+replayRawIdentityChain :: [Text] -> Either Text (IdentityLedgerVertex, LegacyId)
+replayRawIdentityChain wires = do
+  events <- concat <$> traverse rawTransition wires
+  (vertex, registers) <- firstText (applyEventsEither identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) events)
+  pure (vertex, registers ! #current)
+  where
+    rawTransition wire = do
+      let recorded = IdentityRecorded (IdentityRecordedData Bindings.uuidV5 Bindings.mixedEnvelope)
+          audited = IdentityAudited (IdentityAuditedData Bindings.uuidV5 Bindings.mixedEnvelope)
+      recordedEvent <- parseIdentityLedgerEvent (EventType "IdentityRecorded") (replaceObjectField "legacyId" (String wire) (encodeIdentityLedgerEvent recorded))
+      auditedEvent <- parseIdentityLedgerEvent (EventType "IdentityAudited") (replaceObjectField "legacyId" (String wire) (encodeIdentityLedgerEvent audited))
+      pure [recordedEvent, auditedEvent]
+
+replayOnlyAdmission :: Bool
+replayOnlyAdmission =
+  case parseIdentityLedgerEvent (EventType "LegacyIdentityImported") rawEvent of
+    Left _ -> False
+    Right parsedEvent ->
+      case applyEventsEither identityLedgerTransducer (IdentityLedgerOpen, initialIdentityLedgerRegs) [parsedEvent] of
+        Left _ -> False
+        Right (vertex, registers) ->
+          vertex == IdentityLedgerOpen && registers ! #current == Bindings.uuidV5
+  where
+    event = LegacyIdentityImported (LegacyIdentityImportedData Bindings.uuidV7 Bindings.mixedEnvelope)
+    rawEvent = replaceObjectField "legacyId" (String Bindings.uuidV5Text) (encodeIdentityLedgerEvent event)
+
+headInformationLossRejected :: Bool
+headInformationLossRejected =
+  isLeft (parseIdentityLedgerEvent kind (deleteObjectField "legacyId" encoded))
+  where
+    event = IdentityRecorded (IdentityRecordedData Bindings.uuidV5 Bindings.mixedEnvelope)
+    kind = eventType identityLedgerCodec event
+    encoded = encodeIdentityLedgerEvent event
+
+firstText :: (Show problem) => Either problem value -> Either Text value
+firstText = either (Left . T.pack . show) Right
+
+deleteObjectField :: Key.Key -> Value -> Value
+deleteObjectField key (Object value) = Object (KeyMap.delete key value)
+deleteObjectField _ value = value
+
+replaceObjectField :: Key.Key -> Value -> Value -> Value
+replaceObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+replaceObjectField _ _ value = value
diff --git a/test/conformance-id-admission-domains/keiro-dsl-cabal-fragment.context.id-admission-domains.txt b/test/conformance-id-admission-domains/keiro-dsl-cabal-fragment.context.id-admission-domains.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/keiro-dsl-cabal-fragment.context.id-admission-domains.txt
@@ -0,0 +1,53 @@
+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/id-admission-domains.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.IdAdmissionDomains.Bindings
+    Generated.IdAdmissionDomains.BehaviorSourceMap
+    Generated.IdAdmissionDomains.Identities.Contract
+    Generated.IdAdmissionDomains.IdentityLedger.BehaviorContract
+    Generated.IdAdmissionDomains.IdentityLedger.Codec
+    Generated.IdAdmissionDomains.IdentityLedger.Domain
+    Generated.IdAdmissionDomains.IdentityLedger.EventStream
+    Generated.IdAdmissionDomains.IdentityLedger.Harness
+    Generated.IdAdmissionDomains.IdentityLedger.Projection
+    Generated.IdAdmissionDomains.IdentityLedger.Transducer
+    Generated.IdAdmissionDomains.IdentityWork.Queue
+    Generated.IdAdmissionDomains.IdentityWork.QueueCodec
+    Generated.IdAdmissionDomains.IdentityWork.QueuePolicy
+    Generated.IdAdmissionDomains.Nominals
+    Generated.IdAdmissionDomains.Nominals.Internal
+    Generated.IdAdmissionDomains.ReplayAudit
+    Generated.IdAdmissionDomains.Structural.NominalLeaves
+    Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope
+    Generated.IdAdmissionDomains.StructuralConformance
+    Generated.IdAdmissionDomains.StructuralProjections
+    IdAdmissionDomains.IdentityLedger.BehaviorHoles
+
+build-depends:
+    , aeson
+    , base
+    , containers
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , mmzk-typeid
+    , text
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.IdAdmissionDomains.Bindings
+    Conformance.IdAdmissionDomains.Domain
diff --git a/test/conformance-id-admission-domains/keiro-dsl-ledger.context.id-admission-domains.txt b/test/conformance-id-admission-domains/keiro-dsl-ledger.context.id-admission-domains.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-id-admission-domains/keiro-dsl-ledger.context.id-admission-domains.txt
@@ -0,0 +1,61 @@
+keiro-dsl scaffold record v1
+spec: keiro-dsl/test/fixtures/id-admission-domains.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 id-admission-domains structural conformance","path":"Generated/IdAdmissionDomains/StructuralConformance.hs"}
+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains behavior source map","path":"Generated/IdAdmissionDomains/BehaviorSourceMap.hs"}
+module-role {"family":"IdentityEnvelope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural IdentityEnvelope (line 6)","path":"Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs"}
+module-role {"family":"StructuralProjections","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains mapped structural facade","path":"Generated/IdAdmissionDomains/StructuralProjections.hs"}
+module-role {"family":"Nominals","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains generated nominal declarations","path":"Generated/IdAdmissionDomains/Nominals.hs"}
+module-role {"family":"Internal","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains generated nominal ID internals","path":"Generated/IdAdmissionDomains/Nominals/Internal.hs"}
+module-role {"family":"NominalLeaves","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains structural nominal leaves","path":"Generated/IdAdmissionDomains/Structural/NominalLeaves.hs"}
+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.IdAdmissionDomains.Bindings","path":"Conformance/IdAdmissionDomains/Bindings.hs"}
+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context id-admission-domains replay-audit assembly","path":"Generated/IdAdmissionDomains/ReplayAudit.hs"}
+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/Domain.hs"}
+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/Codec.hs"}
+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs"}
+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs"}
+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses IdentityLedger (line 19)","path":"IdAdmissionDomains/IdentityLedger/BehaviorHoles.hs"}
+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs"}
+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/Projection.hs"}
+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate IdentityLedger (line 19)","path":"Generated/IdAdmissionDomains/IdentityLedger/Harness.hs"}
+module-role {"family":"Queue","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue identity_work (line 38)","path":"Generated/IdAdmissionDomains/IdentityWork/Queue.hs"}
+module-role {"family":"QueuePolicy","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue identity_work (line 38)","path":"Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs"}
+module-role {"family":"QueueCodec","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue identity_work (line 38)","path":"Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs"}
+module-role {"family":"Contract","kind":"generated","ownerKind":"contract","ownerName":"contract identities (line 56)","path":"Generated/IdAdmissionDomains/Identities/Contract.hs"}
+generated Generated/IdAdmissionDomains/StructuralConformance.hs
+generated Generated/IdAdmissionDomains/BehaviorSourceMap.hs
+generated Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs
+generated Generated/IdAdmissionDomains/StructuralProjections.hs
+generated Generated/IdAdmissionDomains/Nominals.hs
+generated Generated/IdAdmissionDomains/Nominals/Internal.hs
+generated Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
+hole Conformance/IdAdmissionDomains/Bindings.hs
+generated Generated/IdAdmissionDomains/ReplayAudit.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
+hole IdAdmissionDomains/IdentityLedger/BehaviorHoles.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
+generated Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
+generated Generated/IdAdmissionDomains/IdentityWork/Queue.hs
+generated Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
+generated Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
+generated Generated/IdAdmissionDomains/Identities/Contract.hs
+mapping {"bindingSymbol":"Conformance.IdAdmissionDomains.Bindings.identityEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.id-admission-domains.IdentityEnvelope.v1","mode":"structural","module":"Conformance.IdAdmissionDomains.Domain","package":"keiro-dsl","schema":1,"specName":"IdentityEnvelope","type":"IdentityEnvelope"}
+id-domain id-domain|name=LegacyId|contract=keiro-dsl/id-domain/typeid-v5-or-v7/1|prefix=legacy|separator=_|json=canonical-json-text
+id-domain id-domain|name=contract:identities.IdentityLinked.legacyId|contract=keiro-dsl/id-domain/typeid-v5-or-v7/1|prefix=legacy|separator=_|json=canonical-json-text
+nominal-equality nominal-equality|name=LegacyId|contract=keiro-dsl/nominal-equality/2|key=Text|domain=typeid-v5-or-v7-text:legacy:keiro-dsl/id-domain/typeid-v5-or-v7/1|owner=generated
+binding {"kind":"binding","mappedName":"IdentityEnvelope","module":"Conformance.IdAdmissionDomains.Bindings","path":"labelsById","schema":1,"signature":"identityEnvelopeBinding.labelsById :: Map LegacyId (Text)","symbol":"identityEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"IdentityEnvelope","module":"Conformance.IdAdmissionDomains.Bindings","path":"legacyId","schema":1,"signature":"identityEnvelopeBinding.legacyId :: LegacyId","symbol":"identityEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"IdentityEnvelope","module":"Conformance.IdAdmissionDomains.Bindings","path":"previousId","schema":1,"signature":"identityEnvelopeBinding.previousId :: Maybe (LegacyId)","symbol":"identityEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"IdentityEnvelope","module":"Conformance.IdAdmissionDomains.Bindings","path":null,"schema":1,"signature":"identityEnvelopeFixtures :: FixtureCases Conformance.IdAdmissionDomains.Domain.IdentityEnvelope","symbol":"identityEnvelopeFixtures"}
+behavior {"aggregate":"IdentityLedger","command":"ImportLegacyIdentity","evidence":"generated-authoritative","key":"behavior-v1-0bc43a8eaf58f2f2","kind":"replay-transition","outputs":[{"command":"ImportLegacyIdentity","ownership":"generated-command-identity"}],"source":"Open"}
+behavior {"aggregate":"IdentityLedger","command":"RecordIdentity","evidence":"generated-authoritative","key":"behavior-v1-54975b0ac4e921b5","kind":"live-transition","outputs":[{"command":"RecordIdentity","ownership":"generated-command-identity"},{"command":"RecordIdentity","ownership":"generated-command-identity"}],"source":"Open"}
+behavior {"aggregate":"IdentityLedger","command":"ImportLegacyIdentity","evidence":"generated-authoritative","key":"behavior-v1-5acf27af287654ab","kind":"required-rejection","outputs":[],"source":"Open"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"IdentityLedger","kind":"consumer-build"},{"consumer":"workqueue:identity_work","kind":"consumer-build"},{"aggregate":"IdentityLedger","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"identity_work"}],"consumerEvidence":[{"consumer":"IdentityLedger","operation":null,"path":"IdentityLedger command ImportLegacyIdentity .envelope : IdentityEnvelope","surface":"aggregate-command"},{"consumer":"IdentityLedger","operation":null,"path":"IdentityLedger command RecordIdentity .envelope : IdentityEnvelope","surface":"aggregate-command"},{"consumer":"IdentityLedger","operation":null,"path":"IdentityLedger event IdentityAudited .envelope : IdentityEnvelope","surface":"private-event-payload"},{"consumer":"IdentityLedger","operation":null,"path":"IdentityLedger event IdentityRecorded .envelope : IdentityEnvelope","surface":"private-event-payload"},{"consumer":"IdentityLedger","operation":null,"path":"IdentityLedger event LegacyIdentityImported .envelope : IdentityEnvelope","surface":"private-event-payload"},{"consumer":"workqueue:identity_work","operation":null,"path":"workqueue identity_work payload .envelope : IdentityEnvelope","surface":"workqueue-payload"}],"consumers":["IdentityLedger","workqueue:identity_work"],"declaration":"IdentityEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.IdAdmissionDomains.Domain:IdentityEnvelope\u001fConformance.IdAdmissionDomains.Bindings.identityEnvelopeBinding\u001f1\u001fconformance.id-admission-domains.IdentityEnvelope.v1\u001fConformance.IdAdmissionDomains.Bindings.identityEnvelopeFixtures\u001f\u001f7a6c7d5fd5f6efc4\u001frecord:IdentityEnvelope:labelsById=labelsById,legacyId=legacyId,previousId=previousId"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["IdentityEnvelope"]}
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.17.0.0 (language keiro-dsl 3) from context id-domain-migration behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.
 module Generated.IdDomainMigration.OrderBook.Transducer
   ( orderBookTransducer
   , orderBookFoldFingerprint
@@ -10,7 +10,6 @@
 
 import Generated.IdDomainMigration.OrderBook.Domain
 import Data.Text (Text)
-import Generated.IdDomainMigration.Nominals (OrderId)
 import Keiki.Builder qualified as B
 import Keiki.Core (HsPred, SymTransducer)
 import Keiki.Core qualified as K
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.17.0.0 (language keiro-dsl 3) from context id-domain-migration replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context import-planning-collisions behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context import-planning-collisions nominal scalar projection facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context import-planning-collisions replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural Details; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context import-planning-collisions structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context import-planning-collisions mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from intake incidentInbox; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit.
 module Generated.HospitalCapacity.IncidentInbox.Inbox
   ( InboxFailure (..)
   , IncidentInboxOutcome (..)
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.17.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural JobMetadata; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural JobPayload; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context mapped-queue structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context mapped-queue mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from projection-catalog mapped-readmodel; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural AccountLookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural AccountProfile; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural AccountSummary; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural TenantKey; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural UnusedFilter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context mapped-readmodel structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context mapped-readmodel mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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-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.17.0.0 (language keiro-dsl 4) from context transfer-routing behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context transfer-routing replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from projection-catalog mapped-nominal-query-only; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context nominal-scalars behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from bound nominal enum representation OrderStatus; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context nominal-scalars nominal scalar projection facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context nominal-scalars replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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-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.17.0.0 (language keiro-dsl 4) from context surge-demo behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context surge-demo generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context surge-demo generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context surge-demo replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process input AuditOnly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process reaction AuditOnly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process AuditOnly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-reactions behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process input IncidentReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process reaction IncidentReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process IncidentReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-reactions generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-reactions generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-reactions replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process input ScalingReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process reaction ScalingReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process ScalingReaction; do not edit.
+-- @generated by keiro-dsl 0.18.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-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.17.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context incident-response behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process input IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process reaction IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context incident-response generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context incident-response generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context incident-response replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-timers behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process input IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process reaction IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from process IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-timers generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-timers generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context process-timers replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context catalog-demo behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from projection-catalog catalog-demo; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context catalog-demo replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from mapped structural QualificationPayload; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context catalog-demo structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from context catalog-demo mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from contract emergency; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from publisher hospitalPublisher; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.
+-- @generated by keiro-dsl 0.18.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/Conformance/RefinedBase16/Bindings.hs b/test/conformance-refined-base16/Conformance/RefinedBase16/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Conformance/RefinedBase16/Bindings.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
+
+-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
+-- and never overwrites it.
+module Conformance.RefinedBase16.Bindings
+  ( maybeContentHashFixtures,
+    maybeContentHashBinding,
+    hashEnvelopeFixtures,
+    hashEnvelopeBinding,
+    initialContentHash,
+    contentHashFixtures,
+    contentHashBinding,
+  )
+where
+
+import Conformance.RefinedBase16.Domain (ContentHash, HashEnvelope, MaybeContentHash)
+import Conformance.RefinedBase16.Domain qualified as Domain
+import Data.ByteString qualified as BS
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Generated.RefinedBase16.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.RefinedBase16.Structural.Shape.HashEnvelope qualified as ShapeHashEnvelope
+import Generated.RefinedBase16.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+initialContentHash :: ContentHash
+initialContentHash = Domain.ContentHash BS.empty
+
+contentHashFixtures :: FixtureCases ContentHash
+contentHashFixtures =
+  FixtureCases
+    ( ("empty", initialContentHash)
+        :| [ ("leading-zero", bytes [0, 175]),
+             ("arbitrary-length", bytes [0, 17, 34, 51, 68]),
+             ("sha256-sized", bytes [0 .. 31])
+           ]
+    )
+
+contentHashBinding :: StructuralBinding ContentHash ShapeContentHash.ContentHashShape
+contentHashBinding =
+  StructuralBinding
+    { bindingToShape = \case Domain.ContentHash value -> value,
+      bindingFromShape = Domain.ContentHash
+    }
+
+maybeContentHashFixtures :: FixtureCases MaybeContentHash
+maybeContentHashFixtures =
+  FixtureCases
+    ( ("absent", Domain.MaybeContentHash Nothing)
+        :| [ ("present-empty", Domain.MaybeContentHash (Just initialContentHash)),
+             ("present-leading-zero", Domain.MaybeContentHash (Just (bytes [0, 175])))
+           ]
+    )
+
+maybeContentHashBinding :: StructuralBinding MaybeContentHash ShapeMaybeContentHash.MaybeContentHashShape
+maybeContentHashBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.MaybeContentHash value -> unHash <$> value,
+      bindingFromShape = Domain.MaybeContentHash . fmap Domain.ContentHash
+    }
+
+hashEnvelopeFixtures :: FixtureCases HashEnvelope
+hashEnvelopeFixtures =
+  FixtureCases
+    ( ( "empty-branches",
+        Domain.HashEnvelope
+          initialContentHash
+          Nothing
+          (Domain.MaybeContentHash Nothing)
+          [initialContentHash]
+          (Map.fromList [("empty", initialContentHash)])
+      )
+        :| [ ( "nested",
+               Domain.HashEnvelope
+                 (bytes [0, 175])
+                 (Just (bytes [255]))
+                 (Domain.MaybeContentHash (Just (bytes [0, 17, 34, 51, 68])))
+                 [bytes [1], bytes [2, 3, 4]]
+                 (Map.fromList [("short", bytes [0]), ("longer", bytes [0 .. 7])])
+             )
+           ]
+    )
+
+hashEnvelopeBinding :: StructuralBinding HashEnvelope ShapeHashEnvelope.HashEnvelopeShape
+hashEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \case
+        Domain.HashEnvelope primaryValue optionalHashValue namedOptionalValue sequenceValue labelledValue ->
+          ShapeHashEnvelope.HashEnvelope
+            (unHash primaryValue)
+            (unHash <$> optionalHashValue)
+            (bindingToShape maybeContentHashBinding namedOptionalValue)
+            (map unHash sequenceValue)
+            (Map.map unHash labelledValue),
+      bindingFromShape = \case
+        ShapeHashEnvelope.HashEnvelope primaryValue optionalHashValue namedOptionalValue sequenceValue labelledValue ->
+          Domain.HashEnvelope
+            (Domain.ContentHash primaryValue)
+            (Domain.ContentHash <$> optionalHashValue)
+            (bindingFromShape maybeContentHashBinding namedOptionalValue)
+            (map Domain.ContentHash sequenceValue)
+            (Map.map Domain.ContentHash labelledValue)
+    }
+
+bytes :: [Word] -> ContentHash
+bytes = Domain.ContentHash . BS.pack . map fromIntegral
+
+unHash :: ContentHash -> BS.ByteString
+unHash (Domain.ContentHash value) = value
diff --git a/test/conformance-refined-base16/Conformance/RefinedBase16/Domain.hs b/test/conformance-refined-base16/Conformance/RefinedBase16/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Conformance/RefinedBase16/Domain.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module Conformance.RefinedBase16.Domain where
+
+import Data.Aeson (FromJSON (..), ToJSON (..))
+import Data.ByteString (ByteString)
+import Data.Map.Strict (Map)
+import Data.Proxy (Proxy)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Refined (encodeBase16Bytes, parseBase16Bytes)
+
+newtype ContentHash = ContentHash {unContentHash :: ByteString}
+  deriving stock (Eq, Generic, Show)
+
+instance ToJSON ContentHash where
+  toJSON (ContentHash bytes) = encodeBase16Bytes bytes
+
+instance FromJSON ContentHash where
+  parseJSON value = ContentHash <$> parseBase16Bytes value
+
+instance CanonicalTypeName ContentHash where
+  canonicalTypeName :: Proxy ContentHash -> Text
+  canonicalTypeName _ = "conformance.refined-base16.ContentHash.v1"
+
+newtype MaybeContentHash = MaybeContentHash {unMaybeContentHash :: Maybe ContentHash}
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeContentHash where
+  canonicalTypeName :: Proxy MaybeContentHash -> Text
+  canonicalTypeName _ = "conformance.refined-base16.MaybeContentHash.v1"
+
+data HashEnvelope = HashEnvelope
+  { primary :: !ContentHash,
+    optionalHash :: !(Maybe ContentHash),
+    namedOptional :: !MaybeContentHash,
+    sequence :: ![ContentHash],
+    labelled :: !(Map Text ContentHash)
+  }
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName HashEnvelope where
+  canonicalTypeName :: Proxy HashEnvelope -> Text
+  canonicalTypeName _ = "conformance.refined-base16.HashEnvelope.v1"
diff --git a/test/conformance-refined-base16/Conformance/RefinedBase16/Historical.hs b/test/conformance-refined-base16/Conformance/RefinedBase16/Historical.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Conformance/RefinedBase16/Historical.hs
@@ -0,0 +1,21 @@
+module Conformance.RefinedBase16.Historical
+  ( historicalContentHashCodec,
+  )
+where
+
+import Conformance.RefinedBase16.Domain (ContentHash (..))
+import Data.Aeson.Types (parseEither)
+import Data.Text qualified as T
+import Keiro.Codec.Refined (encodeBase16Bytes, parseBase16Bytes)
+import Keiro.Dsl.CodecCompare (HistoricalCodec (..))
+
+-- Repository fixture modeled on the consumer's pre-adoption case-insensitive
+-- base16 reader and lowercase writer. Real retained Rei history is Plan 295.
+historicalContentHashCodec :: HistoricalCodec ContentHash
+historicalContentHashCodec =
+  HistoricalCodec
+    { identity = "mori://shinzui/rei ContentHash repository fixture",
+      version = "base16-v1",
+      encode = \(ContentHash bytes) -> encodeBase16Bytes bytes,
+      decode = either (Left . T.pack) (Right . ContentHash) . parseEither parseBase16Bytes
+    }
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs b/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs
@@ -0,0 +1,33 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context refined-base16 behavior source map; do not edit.
+module Generated.RefinedBase16.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-3506774d4ee392a3" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/refined-base16.keiro" 49 3)
+  "behavior-v1-48110d655c1ffd6d" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/refined-base16.keiro" 41 16)
+  "behavior-v1-9838f2b4bff837a3" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/refined-base16.keiro" 41 10)
+  "behavior-v1-bf6e600d5467e6cc" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/refined-base16.keiro" 41 16)
+  "behavior-v1-ec86c76d09301c82" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/refined-base16.keiro" 55 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-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs
@@ -0,0 +1,130 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
+module Generated.RefinedBase16.HashJobs.Queue
+  ( HashJob (..)
+  , encodeHashJob
+  , parseHashJob
+  , encodeContentHashMapped
+  , decodeContentHashMapped
+  , encodeHashEnvelopeMapped
+  , decodeHashEnvelopeMapped
+  , encodeMaybeContentHashMapped
+  , decodeMaybeContentHashMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)
+import Conformance.RefinedBase16.Bindings qualified as Bindings
+import Conformance.RefinedBase16.Domain (ContentHash, HashEnvelope, MaybeContentHash)
+import Generated.RefinedBase16.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.RefinedBase16.Structural.Shape.HashEnvelope qualified as ShapeHashEnvelope
+import Generated.RefinedBase16.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "hash_jobs"
+queueDlq = "hash_jobs_dlq"
+queueTable = "pgmq.q_hash_jobs"
+
+data HashJob = HashJob
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Eq, Show)
+
+encodeContentHashMapped :: ContentHash -> Value
+encodeContentHashMapped = encodeContentHashShape . bindingToShape Bindings.contentHashBinding
+
+parseContentHashMapped :: Value -> Parser ContentHash
+parseContentHashMapped value = bindingFromShape Bindings.contentHashBinding <$> parseContentHashShape value
+
+decodeContentHashMapped :: Value -> Either Text ContentHash
+decodeContentHashMapped = mapLeftText . parseEither parseContentHashMapped
+
+encodeContentHashShape :: ShapeContentHash.ContentHashShape -> Value
+encodeContentHashShape = encodeBase16Bytes
+
+parseContentHashShape :: Value -> Parser ShapeContentHash.ContentHashShape
+parseContentHashShape = parseBase16Bytes
+
+encodeHashEnvelopeMapped :: HashEnvelope -> Value
+encodeHashEnvelopeMapped = encodeHashEnvelopeShape . bindingToShape Bindings.hashEnvelopeBinding
+
+parseHashEnvelopeMapped :: Value -> Parser HashEnvelope
+parseHashEnvelopeMapped value = bindingFromShape Bindings.hashEnvelopeBinding <$> parseHashEnvelopeShape value
+
+decodeHashEnvelopeMapped :: Value -> Either Text HashEnvelope
+decodeHashEnvelopeMapped = mapLeftText . parseEither parseHashEnvelopeMapped
+
+encodeHashEnvelopeShape :: ShapeHashEnvelope.HashEnvelopeShape -> Value
+encodeHashEnvelopeShape shape =
+  object
+      [ "primary" .= encodeContentHashShape (shape.primary)
+      , "optionalHash" .= maybe Null (\item0 -> encodeContentHashShape (item0)) (shape.optionalHash)
+      , "namedOptional" .= encodeMaybeContentHashShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeContentHashShape (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeContentHashShape (item0)) (shape.labelled))
+      ]
+
+parseHashEnvelopeShape :: Value -> Parser ShapeHashEnvelope.HashEnvelopeShape
+parseHashEnvelopeShape = withObject "HashEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "HashEnvelope" ["primary", "optionalHash", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeHashEnvelope.HashEnvelope
+    <$> explicitParseField (parseContentHashShape) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0) objectValue "optionalHash"
+    <*> explicitParseField (parseMaybeContentHashShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseContentHashShape) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseContentHashShape) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeMaybeContentHashMapped :: MaybeContentHash -> Value
+encodeMaybeContentHashMapped = encodeMaybeContentHashShape . bindingToShape Bindings.maybeContentHashBinding
+
+parseMaybeContentHashMapped :: Value -> Parser MaybeContentHash
+parseMaybeContentHashMapped value = bindingFromShape Bindings.maybeContentHashBinding <$> parseMaybeContentHashShape value
+
+decodeMaybeContentHashMapped :: Value -> Either Text MaybeContentHash
+decodeMaybeContentHashMapped = mapLeftText . parseEither parseMaybeContentHashMapped
+
+encodeMaybeContentHashShape :: ShapeMaybeContentHash.MaybeContentHashShape -> Value
+encodeMaybeContentHashShape value = maybe Null (\item0 -> encodeContentHashShape (item0)) (value)
+
+parseMaybeContentHashShape :: Value -> Parser ShapeMaybeContentHash.MaybeContentHashShape
+parseMaybeContentHashShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0
+
+encodeHashJob :: HashJob -> Value
+encodeHashJob payload =
+  object
+    [ "hash" .= encodeContentHashMapped payload.hash
+    , "optional_hash" .= encodeMaybeContentHashMapped payload.optionalHash
+    , "envelope" .= encodeHashEnvelopeMapped payload.envelope
+    ]
+
+parseHashJob :: Value -> Either Text HashJob
+parseHashJob = mapLeftText . parseEither (withObject "HashJob" go)
+  where
+    go objectValue = HashJob <$> explicitParseField (parseContentHashMapped) objectValue "hash" <*> explicitParseField (parseMaybeContentHashMapped) objectValue "optional_hash" <*> explicitParseField (parseHashEnvelopeMapped) objectValue "envelope"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.RefinedBase16.HashJobs.QueueCodec (hashJobsPayloadCodec, hashJobsJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.RefinedBase16.HashJobs.Queue (HashJob, encodeHashJob, parseHashJob)
+
+hashJobsPayloadCodec :: Codec HashJob
+hashJobsPayloadCodec =
+  Codec
+    { eventTypes = EventType "HashJob" :| []
+    , eventType = \_ -> EventType "HashJob"
+    , schemaVersion = 1
+    , encode = encodeHashJob
+    , decode = \_ -> parseHashJob
+    , upcasters = []
+    }
+
+hashJobsJobCodec :: JobCodec HashJob
+hashJobsJobCodec = keiroJobCodec hashJobsPayloadCodec
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
+module Generated.RefinedBase16.HashJobs.QueuePolicy
+  ( HashJobsOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data HashJobsOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: HashJobsOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs
@@ -0,0 +1,10 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+module Generated.RefinedBase16.HashLookup.QueryContract
+  ( HashLookupQueryInput
+  , HashLookupQueryResult
+  ) where
+
+import Conformance.RefinedBase16.Domain (HashEnvelope, MaybeContentHash)
+
+type HashLookupQueryInput = MaybeContentHash
+type HashLookupQueryResult = HashEnvelope
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs
@@ -0,0 +1,28 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+module Generated.RefinedBase16.HashLookup.ReadModel
+  ( hashLookupReadModel
+  , hashLookupQualifiedTable
+  ) where
+
+import Generated.RefinedBase16.HashLookup.ReadModelTable (hashLookupQualifiedTable)
+import Generated.RefinedBase16.HashLookup.QueryContract (HashLookupQueryInput, HashLookupQueryResult)
+import RefinedBase16.HashLookup.ReadModelHoles (hashLookupQuery)
+import Keiro.ReadModel (QueryCursorAuthority (..), ReadModel, ReadModelBlueprint (..), HeadScope (..), headWaitingReadModel)
+
+hashLookupReadModel :: ReadModel HashLookupQueryInput HashLookupQueryResult
+hashLookupReadModel =
+  case headWaitingReadModel EntireVisibleLog hashLookupReadModelBlueprint of
+    Left definitionError -> error ("keiro-dsl generated an invalid waiting read model: " <> show definitionError)
+    Right model -> model
+
+hashLookupReadModelBlueprint :: ReadModelBlueprint HashLookupQueryInput HashLookupQueryResult
+hashLookupReadModelBlueprint =
+  ReadModelBlueprint
+    { name = "refined-base16-hash-lookup"
+    , tableName = "hash_values"
+    , schema = "public"
+    , version = 1
+    , shapeHash = "fnv1a:3c07a19c552c3547"
+    , cursorAuthority = DurableQueryCursor "hash-writer"
+    , query = hashLookupQuery
+    }
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
@@ -0,0 +1,57 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text qualified as T
+import Data.List.NonEmpty qualified as NE
+import Generated.RefinedBase16.ProjectionCatalog qualified as ProjectionCatalog
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel (ReadModel (..), readModelCursorAuthority, readModelDefaultFreshness)
+
+-- | (fact, expected from notation, actual generated runtime value).
+readModelFacts :: [(String, String, String)]
+readModelFacts =
+  [ ("registryName", "refined-base16-hash-lookup", T.unpack hashLookupReadModel.name)
+  , ("shapeHash", "fnv1a:3c07a19c552c3547", T.unpack hashLookupReadModel.shapeHash)
+  , ("freshness", "WaitForHead EntireVisibleLog", show (readModelDefaultFreshness hashLookupReadModel))
+  , ("cursorAuthority", "DurableQueryCursor \"hash-writer\"", show (readModelCursorAuthority hashLookupReadModel))
+  ]
+    <> catalogFactsAgainst ProjectionCatalog.projectionCatalogRegistrations ProjectionCatalog.projectionCatalogAsyncRegistrations ProjectionCatalog.projectionCatalogQuerySupplies
+
+catalogFactsAgainst :: [Catalog.CatalogRegistration] -> [Catalog.AsyncProjectionRegistration] -> [Catalog.ResolvedQuerySupply] -> [(String, String, String)]
+catalogFactsAgainst registrations asyncRegistrations supplies =
+  [ ("catalogRegistration", "refined-base16-hash-lookup|1|fnv1a:3c07a19c552c3547|hash_rebuild", renderRegistration [entry | entry <- registrations, Catalog.queryModelIdText entry.queryModelId == "hash_lookup"])
+  , ("querySupply", "hash_writer|hash_rebuild|hash_table", renderSupply [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "hash_lookup"])
+  , ("projectionDelivery", "subscription", renderDelivery [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "hash_lookup"])
+  , ("asyncRegistration:hash_writer", "hash-writer|hash-writer-v1", renderAsync [entry | entry <- asyncRegistrations, Catalog.projectionIdText entry.projectionId == "hash_writer"])
+  ]
+
+renderRegistration :: [Catalog.CatalogRegistration] -> String
+renderRegistration [entry] = T.unpack entry.registryName <> "|" <> show entry.version <> "|" <> T.unpack entry.shapeHash <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.rebuildGroupId)
+renderRegistration _ = "missing"
+
+renderSupply :: [Catalog.ResolvedQuerySupply] -> String
+renderSupply [entry] = T.unpack (Catalog.projectionIdText entry.resolvedProjectionId) <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.resolvedRebuildGroupId) <> "|" <> T.unpack (T.intercalate "," (map Catalog.targetIdText (NE.toList entry.resolvedObservedTargets)))
+renderSupply _ = "missing"
+
+renderDelivery :: [Catalog.ResolvedQuerySupply] -> String
+renderDelivery [entry] = T.unpack (T.intercalate "," (map renderCapability (NE.toList entry.resolvedHandlerCapabilities)))
+renderDelivery _ = "missing"
+
+renderCapability :: Catalog.ProjectionHandlerCapability -> T.Text
+renderCapability Catalog.InlineCapability {} = "inline"
+renderCapability Catalog.SubscriptionCapability {} = "subscription"
+
+renderAsync :: [Catalog.AsyncProjectionRegistration] -> String
+renderAsync [entry] = T.unpack entry.subscriptionName <> "|" <> T.unpack entry.dedupName
+renderAsync _ = "missing"
+
+readModelFactResults :: [(String, Bool)]
+readModelFactResults =
+  [(fact, expected == actual) | (fact, expected, actual) <- readModelFacts]
+
+runReadModelFacts :: IO Bool
+runReadModelFacts = do
+  let failures = [(fact, expected, actual) | (fact, expected, actual) <- readModelFacts, expected /= actual]
+  mapM_ (\(fact, expected, actual) -> putStrLn ("FAIL  " <> fact <> " expected=" <> show expected <> " actual=" <> show actual)) failures
+  pure (null failures)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+module Generated.RefinedBase16.HashLookup.ReadModelTable (hashLookupQualifiedTable) where
+
+import Data.Text (Text)
+import Keiro.Connection (qualifyTable)
+
+-- The fully-qualified, double-quoted data-table reference.
+hashLookupQualifiedTable :: Text
+hashLookupQualifiedTable = qualifyTable "public" "hash_values"
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs
@@ -0,0 +1,387 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.RefinedBase16.HashStore.Codec (encodeHashStoreEvent, parseHashStoreEvent, hashStoreCodec)
+import Generated.RefinedBase16.HashStore.Domain
+import Generated.RefinedBase16.HashStore.Transducer (hashStoreTransducer)
+import Generated.RefinedBase16.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 :: !HashStoreVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef HashStoreVertex))
+  , target :: !(Maybe HashStoreVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty HashStoreEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [HashStoreEvent]
+      , command :: HashStoreCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [HashStoreEvent]
+      , observedChunk :: [HashStoreEvent]
+      }
+  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 =
+  [ -- HashStoreEmpty x StoreHash: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-3506774d4ee392a3"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = HashStoreEmpty
+      , commandName = "StoreHash"
+      , expectedEdge = (Just (K.EdgeRef HashStoreEmpty 0))
+      , target = Just HashStoreStored
+      , eventKinds = ["HashStored", "HashAudited"]
+      }
+  , -- HashStoreStored x ImportLegacyHash: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-48110d655c1ffd6d"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = HashStoreStored
+      , commandName = "ImportLegacyHash"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- HashStoreEmpty x ImportLegacyHash: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-9838f2b4bff837a3"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = HashStoreEmpty
+      , commandName = "ImportLegacyHash"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- HashStoreStored x StoreHash: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-bf6e600d5467e6cc"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = HashStoreStored
+      , commandName = "StoreHash"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- HashStoreEmpty x ImportLegacyHash: replay-only transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-ec86c76d09301c82"
+      , kind = ReplayTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = HashStoreEmpty
+      , commandName = "ImportLegacyHash"
+      , expectedEdge = (Just (K.EdgeRef HashStoreEmpty 1))
+      , target = Just HashStoreStored
+      , eventKinds = ["LegacyHashImported"]
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: HashStore"
+  , "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 -> [HashStoreEvent] -> HashStoreCommand -> 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 -> (HashStoreVertex, K.RegFile HashStoreRegs) -> HashStoreCommand -> 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 hashStoreTransducer 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 -> (HashStoreVertex, K.RegFile HashStoreRegs) -> HashStoreCommand -> 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 hashStoreTransducer 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 hashStoreTransducer 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 hashStoreTransducer 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 HashStoreRegs HashStoreVertex HashStoreEvent -> 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 -> [HashStoreEvent] -> [HashStoreEvent] -> 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 hashStoreTransducer (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 HashStoreVertex] -> 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 -> [HashStoreEvent] -> Either BehaviorFailure (K.ReplaySuccess HashStoreRegs HashStoreVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [HashStoreEvent] -> Either Text [HashStoreEvent]
+decodeEvents = traverse (\event -> parseHashStoreEvent (Codec.eventType hashStoreCodec event) (encodeHashStoreEvent event))
+
+commandKind :: HashStoreCommand -> Text
+commandKind command = case command of
+  StoreHash _ -> "StoreHash"
+  ImportLegacyHash _ -> "ImportLegacyHash"
+
+eventKind :: HashStoreEvent -> Text
+eventKind event = case Codec.eventType hashStoreCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile HashStoreRegs -> K.RegFile HashStoreRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current)
+
+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-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs
@@ -0,0 +1,187 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.Codec (
+    hashStoreCodec,
+    parseHashStoreEvent,
+    encodeHashStoreEvent,
+    encodeContentHashMapped,
+    decodeContentHashMapped,
+    encodeHashEnvelopeMapped,
+    decodeHashEnvelopeMapped,
+    encodeMaybeContentHashMapped,
+    decodeMaybeContentHashMapped,
+) where
+
+import Generated.RefinedBase16.HashStore.Domain
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Base16Bytes (encodeBase16Bytes, parseBase16Bytes)
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Conformance.RefinedBase16.Bindings qualified as Bindings
+import Conformance.RefinedBase16.Domain (ContentHash, HashEnvelope, MaybeContentHash)
+import Generated.RefinedBase16.Structural.Shape.ContentHash qualified as ShapeContentHash
+import Generated.RefinedBase16.Structural.Shape.HashEnvelope qualified as ShapeHashEnvelope
+import Generated.RefinedBase16.Structural.Shape.MaybeContentHash qualified as ShapeMaybeContentHash
+
+
+
+encodeContentHashMapped :: ContentHash -> Value
+encodeContentHashMapped = encodeContentHashShape . bindingToShape Bindings.contentHashBinding
+
+parseContentHashMapped :: Value -> Parser ContentHash
+parseContentHashMapped value = bindingFromShape Bindings.contentHashBinding <$> parseContentHashShape value
+
+decodeContentHashMapped :: Value -> Either Text ContentHash
+decodeContentHashMapped = mapLeftText . parseEither parseContentHashMapped
+
+encodeContentHashShape :: ShapeContentHash.ContentHashShape -> Value
+encodeContentHashShape = encodeBase16Bytes
+
+parseContentHashShape :: Value -> Parser ShapeContentHash.ContentHashShape
+parseContentHashShape = parseBase16Bytes
+
+encodeHashEnvelopeMapped :: HashEnvelope -> Value
+encodeHashEnvelopeMapped = encodeHashEnvelopeShape . bindingToShape Bindings.hashEnvelopeBinding
+
+parseHashEnvelopeMapped :: Value -> Parser HashEnvelope
+parseHashEnvelopeMapped value = bindingFromShape Bindings.hashEnvelopeBinding <$> parseHashEnvelopeShape value
+
+decodeHashEnvelopeMapped :: Value -> Either Text HashEnvelope
+decodeHashEnvelopeMapped = mapLeftText . parseEither parseHashEnvelopeMapped
+
+encodeHashEnvelopeShape :: ShapeHashEnvelope.HashEnvelopeShape -> Value
+encodeHashEnvelopeShape shape =
+  object
+      [ "primary" .= encodeContentHashShape (shape.primary)
+      , "optionalHash" .= maybe Null (\item0 -> encodeContentHashShape (item0)) (shape.optionalHash)
+      , "namedOptional" .= encodeMaybeContentHashShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeContentHashShape (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeContentHashShape (item0)) (shape.labelled))
+      ]
+
+parseHashEnvelopeShape :: Value -> Parser ShapeHashEnvelope.HashEnvelopeShape
+parseHashEnvelopeShape = withObject "HashEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "HashEnvelope" ["primary", "optionalHash", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeHashEnvelope.HashEnvelope
+    <$> explicitParseField (parseContentHashShape) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0) objectValue "optionalHash"
+    <*> explicitParseField (parseMaybeContentHashShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseContentHashShape) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseContentHashShape) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeMaybeContentHashMapped :: MaybeContentHash -> Value
+encodeMaybeContentHashMapped = encodeMaybeContentHashShape . bindingToShape Bindings.maybeContentHashBinding
+
+parseMaybeContentHashMapped :: Value -> Parser MaybeContentHash
+parseMaybeContentHashMapped value = bindingFromShape Bindings.maybeContentHashBinding <$> parseMaybeContentHashShape value
+
+decodeMaybeContentHashMapped :: Value -> Either Text MaybeContentHash
+decodeMaybeContentHashMapped = mapLeftText . parseEither parseMaybeContentHashMapped
+
+encodeMaybeContentHashShape :: ShapeMaybeContentHash.MaybeContentHashShape -> Value
+encodeMaybeContentHashShape value = maybe Null (\item0 -> encodeContentHashShape (item0)) (value)
+
+parseMaybeContentHashShape :: Value -> Parser ShapeMaybeContentHash.MaybeContentHashShape
+parseMaybeContentHashShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseContentHashShape) other0
+
+hashStoreEventTypes :: NonEmpty EventType
+hashStoreEventTypes = EventType "HashStored" :| [EventType "HashAudited", EventType "LegacyHashImported"]
+
+hashStoreCodec :: Codec HashStoreEvent
+hashStoreCodec =
+  Codec
+    { eventTypes = hashStoreEventTypes
+    , eventType = \case
+        HashStored{} -> EventType "HashStored"
+        HashAudited{} -> EventType "HashAudited"
+        LegacyHashImported{} -> EventType "LegacyHashImported"
+    , schemaVersion = 1
+    , encode = encodeHashStoreEvent
+    , decode = parseHashStoreEvent
+    , upcasters = []
+    }
+
+encodeHashStoreEvent :: HashStoreEvent -> Value
+encodeHashStoreEvent = \case
+  HashStored payload ->
+    object
+      [ "kind" .= ("HashStored" :: Text)
+      , "hash" .= encodeContentHashMapped payload.hash
+      , "optionalHash" .= encodeMaybeContentHashMapped payload.optionalHash
+      , "envelope" .= encodeHashEnvelopeMapped payload.envelope
+      ]
+  HashAudited payload ->
+    object
+      [ "kind" .= ("HashAudited" :: Text)
+      , "hash" .= encodeContentHashMapped payload.hash
+      , "optionalHash" .= encodeMaybeContentHashMapped payload.optionalHash
+      , "envelope" .= encodeHashEnvelopeMapped payload.envelope
+      ]
+  LegacyHashImported payload ->
+    object
+      [ "kind" .= ("LegacyHashImported" :: Text)
+      , "hash" .= encodeContentHashMapped payload.hash
+      , "optionalHash" .= encodeMaybeContentHashMapped payload.optionalHash
+      , "envelope" .= encodeHashEnvelopeMapped payload.envelope
+      ]
+
+parseHashStoreEvent :: EventType -> Value -> Either Text HashStoreEvent
+parseHashStoreEvent (EventType tag) = mapLeftText . parseEither (withObject "HashStoreEvent" go)
+  where
+    go o = do
+      case tag of
+        "HashStored" ->
+          HashStored
+            <$> ( HashStoredData
+                    <$> explicitParseField parseContentHashMapped o "hash"
+                    <*> parseOptionalField (parseMaybeContentHashMapped Null) parseMaybeContentHashMapped o "optionalHash"
+                    <*> explicitParseField parseHashEnvelopeMapped o "envelope"
+                )
+        "HashAudited" ->
+          HashAudited
+            <$> ( HashAuditedData
+                    <$> explicitParseField parseContentHashMapped o "hash"
+                    <*> parseOptionalField (parseMaybeContentHashMapped Null) parseMaybeContentHashMapped o "optionalHash"
+                    <*> explicitParseField parseHashEnvelopeMapped o "envelope"
+                )
+        "LegacyHashImported" ->
+          LegacyHashImported
+            <$> ( LegacyHashImportedData
+                    <$> explicitParseField parseContentHashMapped o "hash"
+                    <*> parseOptionalField (parseMaybeContentHashMapped Null) parseMaybeContentHashMapped o "optionalHash"
+                    <*> explicitParseField parseHashEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes hashStoreEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.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.RefinedBase16.Bindings qualified as Bindings
+import Conformance.RefinedBase16.Domain (ContentHash, HashEnvelope, MaybeContentHash)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data HashStoreVertex = HashStoreEmpty | HashStoreStored
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+  deriving anyclass (ToJSON, FromJSON)
+instance CanonicalStateShape HashStoreVertex
+instance CanonicalTypeName HashStoreVertex
+
+data StoreHashData = StoreHashData
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ImportLegacyHashData = ImportLegacyHashData
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data HashStoreCommand = StoreHash !StoreHashData
+  | ImportLegacyHash !ImportLegacyHashData
+  deriving stock (Generic, Eq, Show)
+
+data HashStoredData = HashStoredData
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data HashAuditedData = HashAuditedData
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LegacyHashImportedData = LegacyHashImportedData
+  { hash :: !ContentHash
+  , optionalHash :: !MaybeContentHash
+  , envelope :: !HashEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data HashStoreEvent = HashStored !HashStoredData
+  | HashAudited !HashAuditedData
+  | LegacyHashImported !LegacyHashImportedData
+  deriving stock (Generic, Eq, Show)
+
+type HashStoreRegs =
+  '[ '("current", ContentHash)
+   ]
+
+initialHashStoreRegs :: RegFile HashStoreRegs
+initialHashStoreRegs =
+  RCons (Proxy @"current") Bindings.initialContentHash RNil
+
+$(deriveAggregateCtorsAll ''HashStoreCommand ''HashStoreRegs)
+
+
+
+$(deriveWireCtorsAll ''HashStoreEvent)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs
@@ -0,0 +1,63 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.EventStream
+  ( hashStoreCategory
+  , hashStoreCommandCategory
+  , hashStoreEventStream
+  , hashStoreEventStreamDef
+  , HashStoreEventStream
+  , HashStoreEventStreamDef
+  , hashStoreSnapshotFixture
+  ) where
+
+import Generated.RefinedBase16.HashStore.Domain
+import Generated.RefinedBase16.HashStore.Codec (hashStoreCodec)
+import Generated.RefinedBase16.HashStore.Transducer (hashStoreFoldFingerprint, hashStoreTransducer)
+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.
+hashStoreCategory :: Stream.StreamCategory HashStoreEventStreamDef
+hashStoreCategory = Stream.categoryUnsafe "hashStore"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+hashStoreCommandCategory :: Stream.StreamCategory HashStoreCommand
+hashStoreCommandCategory = Stream.categoryUnsafe "hashStore"
+
+type HashStoreEventStreamDef =
+  EventStream (HsPred HashStoreRegs HashStoreCommand) HashStoreRegs HashStoreVertex HashStoreCommand HashStoreEvent
+
+type HashStoreEventStream =
+  ValidatedEventStream (HsPred HashStoreRegs HashStoreCommand) HashStoreRegs HashStoreVertex HashStoreCommand HashStoreEvent
+
+hashStoreEventStreamDef :: HashStoreEventStreamDef
+hashStoreEventStreamDef =
+  EventStream
+    { transducer = hashStoreTransducer,
+      initialState = HashStoreEmpty,
+      initialRegisters = initialHashStoreRegs,
+      eventCodec = hashStoreCodec,
+      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 hashStoreFoldFingerprint (defaultStateCodec 1))
+    }
+
+hashStoreSnapshotFixture :: (Int, Text)
+hashStoreSnapshotFixture = (1, "refined-base16-v1")
+
+hashStoreEventStream :: HashStoreEventStream
+hashStoreEventStream =
+  mkEventStreamOrThrow "HashStore" hashStoreEventStreamDef
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.Harness (harnessAssertions) where
+
+import Generated.RefinedBase16.HashStore.Domain
+import Generated.RefinedBase16.HashStore.Codec (encodeHashStoreEvent, parseHashStoreEvent, hashStoreCodec, encodeHashEnvelopeMapped, decodeHashEnvelopeMapped)
+import Generated.RefinedBase16.HashStore.Transducer (hashStoreTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+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, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.RefinedBase16.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 hashStoreTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: HashStored", roundTrips sampleEventHashStored)
+  , ("golden round-trip: HashAudited", roundTrips sampleEventHashAudited)
+  , ("golden round-trip: LegacyHashImported", roundTrips sampleEventLegacyHashImported)
+  , ("accepts StoreHash from HashStoreEmpty", acceptStoreHash)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayStoreHash
+
+roundTrips :: HashStoreEvent -> Bool
+roundTrips e = parseHashStoreEvent (eventType hashStoreCodec e) (encodeHashStoreEvent e) == Right e
+
+sampleEventHashStored :: HashStoreEvent
+sampleEventHashStored = HashStored (HashStoredData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))
+
+sampleEventHashAudited :: HashStoreEvent
+sampleEventHashAudited = HashAudited (HashAuditedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))
+
+sampleEventLegacyHashImported :: HashStoreEvent
+sampleEventLegacyHashImported = LegacyHashImported (LegacyHashImportedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))
+
+acceptStoreHash :: Bool
+acceptStoreHash =
+  case step hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) (StoreHash (StoreHashData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == HashStoreStored
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayStoreHash :: [(String, Bool)]
+forwardReplayStoreHash =
+  case step hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) (StoreHash (StoreHashData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseHashStoreEvent (eventType hashStoreCodec event) (encodeHashStoreEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              ]
+  where
+    prefix = "forward/replay equality: StoreHash from HashStoreEmpty -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ hashStoredHashAssertions
+    , hashStoredOptionalHashAssertions
+    , hashStoredEnvelopeAssertions
+    , hashAuditedHashAssertions
+    , hashAuditedOptionalHashAssertions
+    , hashAuditedEnvelopeAssertions
+    , legacyHashImportedHashAssertions
+    , legacyHashImportedOptionalHashAssertions
+    , legacyHashImportedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+hashStoredHashAssertions :: [(String, Bool)]
+hashStoredHashAssertions =
+  [ ("mapped codec round-trip: HashStored/hash/" <> T.unpack label, roundTrips (HashStored (HashStoredData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.contentHashFixtures)
+  ]
+
+hashStoredOptionalHashAssertions :: [(String, Bool)]
+hashStoredOptionalHashAssertions =
+  [ ("mapped codec round-trip: HashStored/optionalHash/" <> T.unpack label, roundTrips (HashStored (HashStoredData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeContentHashFixtures)
+  ]
+
+hashStoredEnvelopeAssertions :: [(String, Bool)]
+hashStoredEnvelopeAssertions =
+  [ ("mapped codec round-trip: HashStored/envelope/" <> T.unpack label, roundTrips (HashStored (HashStoredData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.hashEnvelopeFixtures)
+  ]
+
+hashAuditedHashAssertions :: [(String, Bool)]
+hashAuditedHashAssertions =
+  [ ("mapped codec round-trip: HashAudited/hash/" <> T.unpack label, roundTrips (HashAudited (HashAuditedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.contentHashFixtures)
+  ]
+
+hashAuditedOptionalHashAssertions :: [(String, Bool)]
+hashAuditedOptionalHashAssertions =
+  [ ("mapped codec round-trip: HashAudited/optionalHash/" <> T.unpack label, roundTrips (HashAudited (HashAuditedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeContentHashFixtures)
+  ]
+
+hashAuditedEnvelopeAssertions :: [(String, Bool)]
+hashAuditedEnvelopeAssertions =
+  [ ("mapped codec round-trip: HashAudited/envelope/" <> T.unpack label, roundTrips (HashAudited (HashAuditedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.hashEnvelopeFixtures)
+  ]
+
+legacyHashImportedHashAssertions :: [(String, Bool)]
+legacyHashImportedHashAssertions =
+  [ ("mapped codec round-trip: LegacyHashImported/hash/" <> T.unpack label, roundTrips (LegacyHashImported (LegacyHashImportedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.contentHashFixtures)
+  ]
+
+legacyHashImportedOptionalHashAssertions :: [(String, Bool)]
+legacyHashImportedOptionalHashAssertions =
+  [ ("mapped codec round-trip: LegacyHashImported/optionalHash/" <> T.unpack label, roundTrips (LegacyHashImported (LegacyHashImportedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeContentHashFixtures)
+  ]
+
+legacyHashImportedEnvelopeAssertions :: [(String, Bool)]
+legacyHashImportedEnvelopeAssertions =
+  [ ("mapped codec round-trip: LegacyHashImported/envelope/" <> T.unpack label, roundTrips (LegacyHashImported (LegacyHashImportedData (snd (NonEmpty.head (fixtureCases Bindings.contentHashFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeContentHashFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.hashEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.refined-base16.HashEnvelope.v1/optionalHash", case decodeHashEnvelopeMapped (deleteObjectField "optionalHash" (encodeHashEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalHash" (encodeHashEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.refined-base16.HashEnvelope.v1/optionalHash", isRight (decodeHashEnvelopeMapped (insertObjectField "optionalHash" Aeson.Null (encodeHashEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.hashEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.refined-base16.HashEnvelope.v1", all (\(_, value) -> isLeft (decodeHashEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeHashEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.hashEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+module Generated.RefinedBase16.HashStore.Transducer
+  ( hashStoreTransducer
+  , hashStoreFoldFingerprint
+  , BehaviorOwnership (..)
+  , hashStorePredicateVerifications
+  ) where
+
+import Generated.RefinedBase16.HashStore.Domain
+import Data.Text (Text)
+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 ((=:))
+
+hashStoreTransducer
+  :: SymTransducer
+       (HsPred HashStoreRegs HashStoreCommand)
+       HashStoreRegs
+       HashStoreVertex
+       HashStoreCommand
+       HashStoreEvent
+hashStoreTransducer =
+  B.buildTransducer HashStoreEmpty initialHashStoreRegs isTerminal do
+    B.from HashStoreEmpty do
+      B.onCmd inCtorStoreHash $ \d -> B.do
+        B.slot @"current" =: d.hash
+        B.emit wireHashStored (HashStoredTermFields
+          { hash = d.hash
+          , optionalHash = d.optionalHash
+          , envelope = d.envelope
+          })
+        B.emit wireHashAudited (HashAuditedTermFields
+          { hash = d.hash
+          , optionalHash = d.optionalHash
+          , envelope = d.envelope
+          })
+        B.goto HashStoreStored
+      B.onCmd inCtorImportLegacyHash $ \d -> B.do
+        B.replayOnly
+        B.slot @"current" =: d.hash
+        B.emit wireLegacyHashImported (LegacyHashImportedTermFields
+          { hash = d.hash
+          , optionalHash = d.optionalHash
+          , envelope = d.envelope
+          })
+        B.goto HashStoreStored
+ where
+  isTerminal = \case
+    HashStoreStored -> True
+    _ -> False
+
+hashStoreFoldFingerprint :: Text
+hashStoreFoldFingerprint = "98eb08049a063d1b890b6476513e690a"
+
+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.
+hashStorePredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+hashStorePredicateVerifications = sequence
+  [ verifyTransition "transition1EmptyStoreHash" GeneratedOwned HashStoreEmpty 0
+  , verifyTransition "transition2EmptyImportLegacyHash" GeneratedOwned HashStoreEmpty 1
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut hashStoreTransducer 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-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs b/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs
@@ -0,0 +1,80 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog refined-base16; do not edit.
+{-# LANGUAGE OverloadedStrings #-}
+module Generated.RefinedBase16.ProjectionCatalog
+  ( projectionCatalog
+  , validatedProjectionCatalog
+  , projectionCatalogInventory
+  , projectionCatalogRegistrations
+  , projectionCatalogAsyncRegistrations
+  , projectionCatalogQuerySupplies
+  , registerProjectionCatalog
+  , hashWriterProjectionSet
+  , hashRebuildRebuildGroupId
+  , startHashRebuildRebuild
+  ) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Effectful (Eff, IOE, (:>))
+import Keiro.Projection (AsyncProjection (..))
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel.Rebuild qualified as Rebuild
+import Kiroku.Store.Effect (Store)
+import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
+import RefinedBase16.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
+import Generated.RefinedBase16.HashLookup.ReadModel qualified as RMHashLookup
+
+must :: Show error => Either error value -> value
+must = either (error . show) id
+
+hashWriterProjectionSet :: Catalog.ProjectionSet Holes.HashWriterEvent
+hashWriterProjectionSet =
+  Catalog.ProjectionSet
+    (must (Catalog.mkSourceId "all"))
+    (Catalog.ProjectionDefinition
+      (must (Catalog.mkProjectionId "hash_writer"))
+      (must (Catalog.mkRebuildGroupId "hash_rebuild"))
+      ((must (Catalog.mkTargetId "hash_table")) :| [])
+      (Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeHashWriterReplay Holes.applyHashWriterReplay))
+      (Catalog.AsyncHandler (AsyncProjection "hash-writer-v1" "refined-base16-hash-lookup" "hash-writer" Holes.applyHashWriterLive Holes.hashWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "hash-writer")) (must (Catalog.mkDedupKeyId "hash-writer-v1")) (must (Catalog.mkClaimSite "projection-owner hash_writer async-handler")) :| [])
+      (must (Catalog.mkClaimSite "projection-owner hash_writer"))
+      :| [])
+    (must (Catalog.mkClaimSite "projection-owner hash_writer source"))
+
+projectionCatalog :: Catalog.ProjectionCatalog
+projectionCatalog =
+  Catalog.ProjectionCatalog
+    [Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
+    [Catalog.TargetDeclaration (must (Catalog.mkTargetId "hash_table")) (Catalog.QualifiedTable "public" "hash_values") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target hash_table"))]
+    [Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "hash_rebuild")) [(must (Catalog.mkTargetId "hash_table"))] [] (must (Catalog.mkClaimSite "rebuild-group hash_rebuild"))]
+    []
+    []
+    [Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "hash-writer")) "hash-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner hash_writer subscription"))]
+    [Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "hash-writer-v1")) "hash-writer-v1" (must (Catalog.mkClaimSite "projection-owner hash_writer dedup"))]
+    [Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "hash_lookup")) RMHashLookup.hashLookupReadModel (must (Catalog.mkRebuildGroupId "hash_rebuild")) [(must (Catalog.mkTargetId "hash_table"))] (must (Catalog.mkClaimSite "readmodel hash_lookup")))]
+    [Catalog.SomeProjectionSet hashWriterProjectionSet]
+
+validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
+validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
+  Catalog.Success catalog -> catalog
+  Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
+
+projectionCatalogInventory :: Catalog.CatalogInventory
+projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
+
+projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
+projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
+
+projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
+projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
+
+projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
+projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
+
+registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
+registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
+
+hashRebuildRebuildGroupId :: Catalog.RebuildGroupId
+hashRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "hash_rebuild"))
+
+startHashRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
+startHashRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog hashRebuildRebuildGroupId
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs b/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.RefinedBase16.ReplayAudit (auditTargets) where
+
+import Generated.RefinedBase16.HashStore.EventStream qualified as HashStore
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = HashStore.hashStoreEventStream
+        , category = Stream.categoryText HashStore.hashStoreCategory
+        , mkStream = streamInCategory (Stream.categoryText HashStore.hashStoreCategory)
+        }
+  ]
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/CodecCompare/ContentHash.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/CodecCompare/ContentHash.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/CodecCompare/ContentHash.hs
@@ -0,0 +1,77 @@
+
+-- @generated by keiro-dsl codec comparison; non-production migration evidence; do not edit.
+-- This module compares historical and generated codecs in consumer-owned tests only.
+-- It is never a runtime fallback and never changes the generated codec's authority.
+module Generated.RefinedBase16.Structural.CodecCompare.ContentHash (compareWithHistorical) where
+
+import Control.Monad (filterM)
+import Data.Aeson (Value)
+import Data.Aeson qualified as Aeson
+import Data.List (sort)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text (Text)
+import Data.Text qualified
+import Generated.RefinedBase16.HashStore.Codec qualified as GeneratedCodec
+import Keiro.Codec.Structural (FixtureCases (..))
+import Keiro.Dsl.CodecCompare
+import Keiro.Dsl.TypeGraph (BindingVersion (..), CanonicalTypeId (..), QualifiedValueName (..))
+import System.Directory (doesFileExist, listDirectory)
+import System.FilePath (takeExtension, (</>))
+import Conformance.RefinedBase16.Bindings qualified as Bindings
+import Conformance.RefinedBase16.Domain (ContentHash)
+
+compareWithHistorical :: HistoricalCodec ContentHash -> FilePath -> IO CompareReport
+compareWithHistorical historicalCodec goldenDirectory = do
+  names <- sort . filter ((== ".json") . takeExtension) <$> listDirectory goldenDirectory
+  files <- filterM doesFileExist [goldenDirectory </> name | name <- names]
+  loaded <- traverse (loadGolden historicalCodec) files
+  let inputIssues = [issue | Left issue <- loaded]
+      entries = [entry | Right entry <- loaded]
+      typedCases = NonEmpty.toList (fixtureCases Bindings.contentHashFixtures)
+      encodeObservations =
+        [ EncodeObservation label (historicalCodec.encode value) (GeneratedCodec.encodeContentHashMapped value)
+        | (label, value) <- typedCases
+        ]
+      decodeObservations = [observation | (observation, _) <- entries]
+      typedObserved =
+        concat
+          [ observedBranchesFor FromBinding branchSchema (GeneratedCodec.encodeContentHashMapped value)
+          | (_, value) <- typedCases
+          ]
+      historicalObserved =
+        concat [observedBranchesFor HistoricalGolden branchSchema value | (_, values) <- entries, value <- values]
+      declared = declaredBranchesFor FromBinding branchSchema <> declaredBranchesFor HistoricalGolden branchSchema
+      provenance =
+        CompareProvenance
+          { historicalCodecIdentity = historicalCodec.identity
+          , historicalCodecVersion = historicalCodec.version
+          , canonicalType = CanonicalTypeId "conformance.refined-base16.ContentHash.v1"
+          , bindingSymbol = QualifiedValueName "Conformance.RefinedBase16.Bindings.contentHashBinding"
+          , bindingVersion = BindingVersion "1"
+          , wireFingerprint = "9a76d13837d002d3"
+          }
+  pure (compareReport provenance inputIssues (encodeObservations <> decodeObservations) declared (typedObserved <> historicalObserved))
+
+loadGolden :: HistoricalCodec ContentHash -> FilePath -> IO (Either CompareInputIssue (CompareObservation, [Value]))
+loadGolden historicalCodec path = do
+  decoded <- Aeson.eitherDecodeFileStrict path
+  pure $ case decoded of
+    Left reason -> Left (HistoricalGoldenUnreadable path (fromString reason))
+    Right inputValue ->
+      let historicalDecoded = historicalCodec.decode inputValue
+          historicalOutcome = normalizeDecode historicalDecoded
+          generatedOutcome = normalizeDecode (GeneratedCodec.decodeContentHashMapped inputValue)
+          observation = DecodeObservation path inputValue historicalOutcome generatedOutcome
+          coveredValues = case historicalDecoded of
+            Right value -> [inputValue, GeneratedCodec.encodeContentHashMapped value]
+            Left _ -> []
+       in Right (observation, coveredValues)
+
+normalizeDecode :: Either Text ContentHash -> DecodeOutcome
+normalizeDecode = either DecodeFailed (DecodedShape . GeneratedCodec.encodeContentHashMapped)
+
+fromString :: String -> Text
+fromString = Data.Text.pack
+
+branchSchema :: BranchSchema
+branchSchema = BranchScalar
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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)
+
+type ContentHashShape = 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
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs
@@ -0,0 +1,17 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.RefinedBase16.Structural.Shape.ContentHash qualified as ContentHash
+import Generated.RefinedBase16.Structural.Shape.MaybeContentHash qualified as MaybeContentHash
+
+data HashEnvelopeShape = HashEnvelope
+  { primary :: !ContentHash.ContentHashShape
+  , optionalHash :: !(Maybe ContentHash.ContentHashShape)
+  , namedOptional :: !MaybeContentHash.MaybeContentHashShape
+  , sequence :: ![ContentHash.ContentHashShape]
+  , labelled :: !(Map Text ContentHash.ContentHashShape)
+  }
+  deriving stock (Eq, Generic, Show)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
@@ -0,0 +1,6 @@
+-- @generated by keiro-dsl 0.18.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
+
+type MaybeContentHashShape = (Maybe ContentHash.ContentHashShape)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs b/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs
@@ -0,0 +1,84 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context refined-base16 structural conformance; do not edit.
+module Generated.RefinedBase16.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Generated.RefinedBase16.Structural.Shape.HashEnvelope (HashEnvelopeShape(optionalHash))
+import Conformance.RefinedBase16.Bindings qualified as Bindings
+import Conformance.RefinedBase16.Domain (ContentHash, HashEnvelope, MaybeContentHash)
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ contentHashBindingAssertions
+    , hashEnvelopeBindingAssertions
+    , maybeContentHashBindingAssertions
+    , [("fixture coverage: conformance.refined-base16.ContentHash.v1", coverageContentHash)]
+    , [("fixture coverage: conformance.refined-base16.HashEnvelope.v1", coverageHashEnvelope)]
+    , [("fixture coverage: conformance.refined-base16.MaybeContentHash.v1", coverageMaybeContentHash)]
+    ]
+
+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)
+
+contentHashBindingAssertions :: [(String, Bool)]
+contentHashBindingAssertions =
+  ("fixture labels: conformance.refined-base16.ContentHash.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.refined-base16.ContentHash.v1", canonicalTypeName (Proxy @ContentHash) == "conformance.refined-base16.ContentHash.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.refined-base16.ContentHash.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.contentHashBinding value)
+      , ("binding shape round-trip: conformance.refined-base16.ContentHash.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.contentHashBinding (bindingToShape Bindings.contentHashBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.contentHashFixtures
+
+hashEnvelopeBindingAssertions :: [(String, Bool)]
+hashEnvelopeBindingAssertions =
+  ("fixture labels: conformance.refined-base16.HashEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.refined-base16.HashEnvelope.v1", canonicalTypeName (Proxy @HashEnvelope) == "conformance.refined-base16.HashEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.refined-base16.HashEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.hashEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.refined-base16.HashEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.hashEnvelopeBinding (bindingToShape Bindings.hashEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.hashEnvelopeFixtures
+
+maybeContentHashBindingAssertions :: [(String, Bool)]
+maybeContentHashBindingAssertions =
+  ("fixture labels: conformance.refined-base16.MaybeContentHash.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.refined-base16.MaybeContentHash.v1", canonicalTypeName (Proxy @MaybeContentHash) == "conformance.refined-base16.MaybeContentHash.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.refined-base16.MaybeContentHash.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeContentHashBinding value)
+      , ("binding shape round-trip: conformance.refined-base16.MaybeContentHash.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeContentHashBinding (bindingToShape Bindings.maybeContentHashBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeContentHashFixtures
+
+coverageContentHash :: Bool
+coverageContentHash = True
+
+coverageHashEnvelope :: Bool
+coverageHashEnvelope = any (isNothing . (.optionalHash)) shapes && any (isJust . (.optionalHash)) shapes
+  where
+    shapes = map (bindingToShape Bindings.hashEnvelopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.hashEnvelopeFixtures))
+
+coverageMaybeContentHash :: Bool
+coverageMaybeContentHash = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeContentHashBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeContentHashFixtures))
diff --git a/test/conformance-refined-base16/Main.hs b/test/conformance-refined-base16/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/Main.hs
@@ -0,0 +1,218 @@
+module Main (main) where
+
+import Conformance.RefinedBase16.Bindings (contentHashBinding, contentHashFixtures)
+import Conformance.RefinedBase16.Domain
+import Conformance.RefinedBase16.Historical (historicalContentHashCodec)
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..), parseJSON)
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (parseEither)
+import Data.ByteString qualified as BS
+import Data.Either (isLeft)
+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 Generated.RefinedBase16.HashJobs.Queue (HashJob (..), encodeHashJob, parseHashJob)
+import Generated.RefinedBase16.HashLookup.QueryContract (HashLookupQueryInput, HashLookupQueryResult)
+import Generated.RefinedBase16.HashStore.Codec
+import Generated.RefinedBase16.HashStore.Domain
+import Generated.RefinedBase16.HashStore.Harness (harnessAssertions)
+import Generated.RefinedBase16.HashStore.Transducer (hashStoreTransducer)
+import Generated.RefinedBase16.Structural.CodecCompare.ContentHash (compareWithHistorical)
+import Generated.RefinedBase16.StructuralConformance (structuralConformanceAssertions)
+import Keiki.Core (applyEventsEither, (!))
+import Keiro.Codec (EventType (..), eventType)
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..), bindingDomainRoundTrip, bindingShapeRoundTrip)
+import Keiro.Dsl.CodecCompare (CompareObservation (..), FixtureVerdict (..), HistoricalCodec (..), classifyObservation, reportSucceeded)
+import Keiro.Test.ReplayCompatibility (checkNormalizationLaw)
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  comparison <-
+    compareWithHistorical
+      historicalContentHashCodec
+      "test/conformance-refined-base16/fixtures/codec-compare"
+  let assertions =
+        [("structural/" <> label, passed) | (label, passed) <- structuralConformanceAssertions]
+          <> harnessAssertions
+          <> [ ("lowercase output preserves empty and leading-zero bytes", canonicalWire),
+               ("mixed-case and uppercase inputs normalize without changing bytes", historicalSpellingsNormalize),
+               ("malformed spellings fail before the consumer binding", malformedRejected),
+               ("arbitrary byte lengths remain admitted", unrestrictedLengths),
+               ("normalization preserves serialized multi-event replay state", normalizationReplayLaw),
+               ("replay-only history preserves the decoded hash", replayOnlyNormalization),
+               ("a first event that loses the hash is rejected", headInformationLossRejected),
+               ("a transposing consumer binding violates both total laws", transposingBindingRejected),
+               ("historical repository codec remains byte-compatible", historicalCodecParity),
+               ("generated historical codec comparison succeeds", reportSucceeded comparison),
+               ("canonicalization preserves content-derived durable identity", durableIdentityStable),
+               ("optional, list, and map compositions round-trip", nestedRoundTrip),
+               ("queue payloads preserve refined hashes", queueRoundTrip),
+               ("query contracts preserve refined domain types", queryAgreement),
+               ("application-owned workflow codecs retain the same bytes", workflowCodecRoundTrip)
+             ]
+  forM_ assertions $ \(label, passed) ->
+    putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+canonicalWire :: Bool
+canonicalWire =
+  encodeContentHashMapped (hash [0, 175]) == String "00af"
+    && encodeContentHashMapped (hash []) == String ""
+
+historicalSpellingsNormalize :: Bool
+historicalSpellingsNormalize =
+  decodeContentHashMapped (String "00aF") == Right (hash [0, 175])
+    && decodeContentHashMapped (String "00AF") == Right (hash [0, 175])
+    && fmap encodeContentHashMapped (decodeContentHashMapped (String "00AF")) == Right (String "00af")
+
+malformedRejected :: Bool
+malformedRejected =
+  all (isLeft . decodeContentHashMapped . String) ["0", "0x00", "gg", "00 af", " 00"]
+    && isLeft (decodeContentHashMapped Null)
+
+unrestrictedLengths :: Bool
+unrestrictedLengths =
+  all
+    (\value -> decodeContentHashMapped (encodeContentHashMapped value) == Right value)
+    [hash [], hash [0], hash [0, 17, 34, 51, 68], hash [0 .. 31], hash [0 .. 32]]
+
+normalizationReplayLaw :: Bool
+normalizationReplayLaw =
+  null
+    ( checkNormalizationLaw
+        decodeContentHashMapped
+        encodeContentHashMapped
+        replayRawHashChain
+        []
+        (String "00AF")
+        (String "00af")
+        []
+    )
+
+replayRawHashChain :: [Value] -> Either Text (HashStoreVertex, ContentHash)
+replayRawHashChain wires = do
+  events <- concat <$> traverse rawTransition wires
+  (vertex, registers) <- firstText (applyEventsEither hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) events)
+  pure (vertex, registers ! #current)
+  where
+    rawTransition wire = do
+      let value = hash []
+          optional = MaybeContentHash Nothing
+          envelope = sampleEnvelope
+          stored = HashStored (HashStoredData value optional envelope)
+          audited = HashAudited (HashAuditedData value optional envelope)
+      storedEvent <- parseHashStoreEvent (EventType "HashStored") (replaceObjectField "hash" wire (encodeHashStoreEvent stored))
+      auditedEvent <- parseHashStoreEvent (EventType "HashAudited") (replaceObjectField "hash" wire (encodeHashStoreEvent audited))
+      pure [storedEvent, auditedEvent]
+
+replayOnlyNormalization :: Bool
+replayOnlyNormalization =
+  case parseHashStoreEvent (EventType "LegacyHashImported") rawEvent of
+    Left _ -> False
+    Right parsedEvent ->
+      case applyEventsEither hashStoreTransducer (HashStoreEmpty, initialHashStoreRegs) [parsedEvent] of
+        Left _ -> False
+        Right (vertex, registers) ->
+          vertex == HashStoreStored && registers ! #current == hash [0, 175]
+  where
+    event = LegacyHashImported (LegacyHashImportedData (hash []) (MaybeContentHash Nothing) sampleEnvelope)
+    rawEvent = replaceObjectField "hash" (String "00AF") (encodeHashStoreEvent event)
+
+headInformationLossRejected :: Bool
+headInformationLossRejected =
+  isLeft (parseHashStoreEvent kind (deleteObjectField "hash" encoded))
+  where
+    event = HashStored (HashStoredData (hash [0, 175]) (MaybeContentHash Nothing) sampleEnvelope)
+    kind = eventType hashStoreCodec event
+    encoded = encodeHashStoreEvent event
+
+transposingBindingRejected :: Bool
+transposingBindingRejected =
+  bindingDomainRoundTrip contentHashBinding value
+    && bindingShapeRoundTrip contentHashBinding (BS.pack [0, 175])
+    && not (bindingDomainRoundTrip brokenBinding value)
+    && not (bindingShapeRoundTrip brokenBinding (BS.pack [0, 175]))
+  where
+    value = hash [0, 175]
+    brokenBinding =
+      StructuralBinding
+        { bindingToShape = \(ContentHash bytes) -> BS.reverse bytes,
+          bindingFromShape = ContentHash
+        }
+
+historicalCodecParity :: Bool
+historicalCodecParity =
+  all
+    ( \(label, value) ->
+        classifyObservation
+          (EncodeObservation label (historicalContentHashCodec.encode value) (encodeContentHashMapped value))
+          == Right JsonParity
+    )
+    (NonEmpty.toList (fixtureCases contentHashFixtures))
+    && historicalContentHashCodec.decode (String "00AF") == Right (hash [0, 175])
+
+durableIdentityStable :: Bool
+durableIdentityStable =
+  case historicalContentHashCodec.decode (String "00AF") of
+    Left _ -> False
+    Right historical ->
+      case decodeContentHashMapped (String "00af") of
+        Left _ -> False
+        Right candidate -> durableIdentity historical == durableIdentity candidate
+
+durableIdentity :: ContentHash -> Word
+durableIdentity (ContentHash bytes) = BS.foldl' (\acc byte -> acc * 16777619 + fromIntegral byte) 2166136261 bytes
+
+nestedRoundTrip :: Bool
+nestedRoundTrip = decodeHashEnvelopeMapped (encodeHashEnvelopeMapped sampleEnvelope) == Right sampleEnvelope
+
+queueRoundTrip :: Bool
+queueRoundTrip = parseHashJob (encodeHashJob payload) == Right payload
+  where
+    payload = HashJob (hash [0, 175]) (MaybeContentHash Nothing) sampleEnvelope
+
+queryAgreement :: Bool
+queryAgreement =
+  queryInputIdentity (MaybeContentHash (Just (hash [0, 175]))) == MaybeContentHash (Just (hash [0, 175]))
+    && queryResultIdentity sampleEnvelope == sampleEnvelope
+
+queryInputIdentity :: HashLookupQueryInput -> MaybeContentHash
+queryInputIdentity = id
+
+queryResultIdentity :: HashLookupQueryResult -> HashEnvelope
+queryResultIdentity = id
+
+workflowCodecRoundTrip :: Bool
+workflowCodecRoundTrip =
+  parseEither parseJSON (Aeson.toJSON value) == Right value
+    && parseEither parseJSON (String "00AF") == Right value
+  where
+    value = hash [0, 175]
+
+sampleEnvelope :: HashEnvelope
+sampleEnvelope =
+  HashEnvelope
+    (hash [0, 175])
+    (Just (hash [255]))
+    (MaybeContentHash (Just (hash [0, 17, 34, 51, 68])))
+    [hash [], hash [1], hash [2, 3, 4]]
+    (Map.fromList [("short", hash [0]), ("longer", hash [0 .. 7])])
+
+hash :: [Word] -> ContentHash
+hash = ContentHash . BS.pack . map fromIntegral
+
+firstText :: (Show problem) => Either problem value -> Either Text value
+firstText = either (Left . T.pack . show) Right
+
+deleteObjectField :: Key.Key -> Value -> Value
+deleteObjectField key (Object value) = Object (KeyMap.delete key value)
+deleteObjectField _ value = value
+
+replaceObjectField :: Key.Key -> Value -> Value -> Value
+replaceObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+replaceObjectField _ _ value = value
diff --git a/test/conformance-refined-base16/README.md b/test/conformance-refined-base16/README.md
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/README.md
@@ -0,0 +1,33 @@
+# Refined base16 conformance
+
+This compiled public-API example covers `mapped refined` base16 bytes as a bare
+mapping, through optional/list/map structural composition, aggregate commands,
+events and registers, workqueue payloads, and read-model query types. Process
+and workflow journals remain application-owned; `Main.hs` includes an explicit
+application-codec round trip without claiming DSL ownership.
+
+The historical codec is a repository fixture modeled from
+`mori://shinzui/rei` project-relative
+`rei-core/src/Rei/Modules/Knowledge/Domain/Task/Types.hs` and
+`rei-core/src/Rei/Modules/Note/Domain/Types.hs` (artifact-level URIs pending).
+It is not evidence from Rei's retained production history; that audit belongs
+to Plan 295. The generated codec-comparison module runs that modeled reader
+against committed empty, leading-zero, mixed-case, uppercase, and arbitrary-
+length payloads plus the consumer binding fixtures.
+
+The map composition is a JSON object with refined values. Refined values are
+deliberately unsupported as JSON object keys because distinct wire spellings
+such as uppercase and lowercase hex would decode to the same bytes.
+
+Supported-use matrix:
+
+- Bare and nested optional/list/text-keyed-map values: generated and tested.
+- Aggregate commands, events, registers, snapshots, and replay-only events:
+  generated and tested through serialized event envelopes.
+- Workqueue payloads and read-model query input/results: generated and tested.
+- Public contract fields: unsupported; validation locates the mapped name and
+  requires a declared public ID instead.
+- Equality, ordering, and arithmetic in aggregate expressions: unsupported;
+  validation reports the operator at its source location.
+- Process and workflow journals: application-owned. The suite proves the
+  explicit codec law but does not infer journal ownership from the shared type.
diff --git a/test/conformance-refined-base16/RefinedBase16/HashLookup/ReadModelHoles.hs b/test/conformance-refined-base16/RefinedBase16/HashLookup/ReadModelHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/RefinedBase16/HashLookup/ReadModelHoles.hs
@@ -0,0 +1,14 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module RefinedBase16.HashLookup.ReadModelHoles
+  ( hashLookupQuery
+  ) where
+
+import Generated.RefinedBase16.HashLookup.ReadModelTable (hashLookupQualifiedTable)
+import Generated.RefinedBase16.HashLookup.QueryContract (HashLookupQueryInput, HashLookupQueryResult)
+import Hasql.Transaction qualified as Tx
+
+-- HOLE: query "public"."hash_values" via hashLookupQualifiedTable; never rely on search_path.
+-- The generated QueryContract owns query input/result type identity.
+-- Declared columns:
+hashLookupQuery :: HashLookupQueryInput -> Tx.Transaction HashLookupQueryResult
+hashLookupQuery _input = hashLookupQualifiedTable `seq` error "HOLE: fill hash_lookup query"
diff --git a/test/conformance-refined-base16/RefinedBase16/HashStore/BehaviorHoles.hs b/test/conformance-refined-base16/RefinedBase16/HashStore/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/RefinedBase16/HashStore/BehaviorHoles.hs
@@ -0,0 +1,13 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module RefinedBase16.HashStore.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.RefinedBase16.HashStore.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-3506774d4ee392a3") -- HashStoreEmpty x StoreHash: live transition
+  , Pending (BehaviorKey "behavior-v1-48110d655c1ffd6d") -- HashStoreStored x ImportLegacyHash: required rejection
+  , Pending (BehaviorKey "behavior-v1-9838f2b4bff837a3") -- HashStoreEmpty x ImportLegacyHash: required rejection
+  , Pending (BehaviorKey "behavior-v1-bf6e600d5467e6cc") -- HashStoreStored x StoreHash: required rejection
+  , Pending (BehaviorKey "behavior-v1-ec86c76d09301c82") -- HashStoreEmpty x ImportLegacyHash: replay-only transition
+  ]
diff --git a/test/conformance-refined-base16/RefinedBase16/ProjectionCatalog/ProjectionCatalogHoles.hs b/test/conformance-refined-base16/RefinedBase16/ProjectionCatalog/ProjectionCatalogHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/RefinedBase16/ProjectionCatalog/ProjectionCatalogHoles.hs
@@ -0,0 +1,23 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module RefinedBase16.ProjectionCatalog.ProjectionCatalogHoles
+  ( HashWriterEvent (..)
+  , applyHashWriterLive
+  , hashWriterIdempotencyKey
+  , applyHashWriterReplay
+  , decodeHashWriterReplay
+  ) where
+
+import Hasql.Transaction qualified as Tx
+import Keiro.Projection.Catalog qualified as Catalog
+import Kiroku.Store.Types (EventId, RecordedEvent)
+
+-- Projection owner hash_writer (order 10).
+data HashWriterEvent = HashWriterEvent
+applyHashWriterLive :: RecordedEvent -> Tx.Transaction ()
+applyHashWriterLive = error "HOLE: fill hash_writer live apply"
+hashWriterIdempotencyKey :: RecordedEvent -> EventId
+hashWriterIdempotencyKey = error "HOLE: return the durable event id for hash_writer"
+decodeHashWriterReplay :: RecordedEvent -> Catalog.ReplayDecodeResult HashWriterEvent
+decodeHashWriterReplay = error "HOLE: classify and decode every hash_writer source event"
+applyHashWriterReplay :: HashWriterEvent -> RecordedEvent -> Tx.Transaction ()
+applyHashWriterReplay = error "HOLE: fill hash_writer replay apply without live-only side effects"
diff --git a/test/conformance-refined-base16/fixtures/codec-compare/arbitrary-length.json b/test/conformance-refined-base16/fixtures/codec-compare/arbitrary-length.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/fixtures/codec-compare/arbitrary-length.json
@@ -0,0 +1,1 @@
+"0011223344"
diff --git a/test/conformance-refined-base16/fixtures/codec-compare/empty.json b/test/conformance-refined-base16/fixtures/codec-compare/empty.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/fixtures/codec-compare/empty.json
@@ -0,0 +1,1 @@
+""
diff --git a/test/conformance-refined-base16/fixtures/codec-compare/mixed-case.json b/test/conformance-refined-base16/fixtures/codec-compare/mixed-case.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/fixtures/codec-compare/mixed-case.json
@@ -0,0 +1,1 @@
+"00aF"
diff --git a/test/conformance-refined-base16/fixtures/codec-compare/uppercase-leading-zero.json b/test/conformance-refined-base16/fixtures/codec-compare/uppercase-leading-zero.json
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/fixtures/codec-compare/uppercase-leading-zero.json
@@ -0,0 +1,1 @@
+"00AF"
diff --git a/test/conformance-refined-base16/keiro-dsl-cabal-fragment.context.refined-base16.txt b/test/conformance-refined-base16/keiro-dsl-cabal-fragment.context.refined-base16.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/keiro-dsl-cabal-fragment.context.refined-base16.txt
@@ -0,0 +1,60 @@
+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/refined-base16.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.RefinedBase16.Bindings
+    Generated.RefinedBase16.BehaviorSourceMap
+    Generated.RefinedBase16.HashJobs.Queue
+    Generated.RefinedBase16.HashJobs.QueueCodec
+    Generated.RefinedBase16.HashJobs.QueuePolicy
+    Generated.RefinedBase16.HashLookup.QueryContract
+    Generated.RefinedBase16.HashLookup.ReadModel
+    Generated.RefinedBase16.HashLookup.ReadModelHarness
+    Generated.RefinedBase16.HashLookup.ReadModelTable
+    Generated.RefinedBase16.HashStore.BehaviorContract
+    Generated.RefinedBase16.HashStore.Codec
+    Generated.RefinedBase16.HashStore.Domain
+    Generated.RefinedBase16.HashStore.EventStream
+    Generated.RefinedBase16.HashStore.Harness
+    Generated.RefinedBase16.HashStore.Projection
+    Generated.RefinedBase16.HashStore.Transducer
+    Generated.RefinedBase16.ProjectionCatalog
+    Generated.RefinedBase16.ReplayAudit
+    Generated.RefinedBase16.Structural.Shape.ContentHash
+    Generated.RefinedBase16.Structural.Shape.HashEnvelope
+    Generated.RefinedBase16.Structural.Shape.MaybeContentHash
+    Generated.RefinedBase16.StructuralConformance
+    RefinedBase16.HashLookup.ReadModelHoles
+    RefinedBase16.HashStore.BehaviorHoles
+    RefinedBase16.ProjectionCatalog.ProjectionCatalogHoles
+
+build-depends:
+    , aeson
+    , base
+    , bytestring
+    , containers
+    , effectful-core
+    , hasql-transaction
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , kiroku-store
+    , text
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.RefinedBase16.Bindings
+    Conformance.RefinedBase16.Domain
diff --git a/test/conformance-refined-base16/keiro-dsl-ledger.context.refined-base16.txt b/test/conformance-refined-base16/keiro-dsl-ledger.context.refined-base16.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-refined-base16/keiro-dsl-ledger.context.refined-base16.txt
@@ -0,0 +1,88 @@
+keiro-dsl scaffold record v1
+spec: keiro-dsl/test/fixtures/refined-base16.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 refined-base16 structural conformance","path":"Generated/RefinedBase16/StructuralConformance.hs"}
+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context refined-base16 behavior source map","path":"Generated/RefinedBase16/BehaviorSourceMap.hs"}
+module-role {"family":"ContentHash","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural ContentHash (line 4)","path":"Generated/RefinedBase16/Structural/Shape/ContentHash.hs"}
+module-role {"family":"HashEnvelope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural HashEnvelope (line 23)","path":"Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs"}
+module-role {"family":"MaybeContentHash","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural MaybeContentHash (line 14)","path":"Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs"}
+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.RefinedBase16.Bindings","path":"Conformance/RefinedBase16/Bindings.hs"}
+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context refined-base16 replay-audit assembly","path":"Generated/RefinedBase16/ReplayAudit.hs"}
+module-role {"family":"ProjectionCatalog","kind":"generated","ownerKind":"projection-catalog","ownerName":"projection-catalog refined-base16","path":"Generated/RefinedBase16/ProjectionCatalog.hs"}
+module-role {"family":"ProjectionCatalogHoles","kind":"hole","ownerKind":"projection-catalog","ownerName":"projection-catalog refined-base16","path":"RefinedBase16/ProjectionCatalog/ProjectionCatalogHoles.hs"}
+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/Domain.hs"}
+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/Codec.hs"}
+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/Transducer.hs"}
+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/BehaviorContract.hs"}
+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses HashStore (line 38)","path":"RefinedBase16/HashStore/BehaviorHoles.hs"}
+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/EventStream.hs"}
+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/Projection.hs"}
+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate HashStore (line 38)","path":"Generated/RefinedBase16/HashStore/Harness.hs"}
+module-role {"family":"Queue","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue hash_jobs (line 64)","path":"Generated/RefinedBase16/HashJobs/Queue.hs"}
+module-role {"family":"QueuePolicy","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue hash_jobs (line 64)","path":"Generated/RefinedBase16/HashJobs/QueuePolicy.hs"}
+module-role {"family":"QueueCodec","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue hash_jobs (line 64)","path":"Generated/RefinedBase16/HashJobs/QueueCodec.hs"}
+module-role {"family":"ReadModelTable","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel hash_lookup (line 106)","path":"Generated/RefinedBase16/HashLookup/ReadModelTable.hs"}
+module-role {"family":"QueryContract","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel hash_lookup (line 106)","path":"Generated/RefinedBase16/HashLookup/QueryContract.hs"}
+module-role {"family":"ReadModel","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel hash_lookup (line 106)","path":"Generated/RefinedBase16/HashLookup/ReadModel.hs"}
+module-role {"family":"ReadModelHoles","kind":"hole","ownerKind":"readmodel","ownerName":"readmodel hash_lookup (line 106)","path":"RefinedBase16/HashLookup/ReadModelHoles.hs"}
+module-role {"family":"ReadModelHarness","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel hash_lookup (line 106)","path":"Generated/RefinedBase16/HashLookup/ReadModelHarness.hs"}
+generated Generated/RefinedBase16/StructuralConformance.hs
+generated Generated/RefinedBase16/BehaviorSourceMap.hs
+generated Generated/RefinedBase16/Structural/Shape/ContentHash.hs
+generated Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs
+generated Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
+hole Conformance/RefinedBase16/Bindings.hs
+generated Generated/RefinedBase16/ReplayAudit.hs
+generated Generated/RefinedBase16/ProjectionCatalog.hs
+hole RefinedBase16/ProjectionCatalog/ProjectionCatalogHoles.hs
+generated Generated/RefinedBase16/HashStore/Domain.hs
+generated Generated/RefinedBase16/HashStore/Codec.hs
+generated Generated/RefinedBase16/HashStore/Transducer.hs
+generated Generated/RefinedBase16/HashStore/BehaviorContract.hs
+hole RefinedBase16/HashStore/BehaviorHoles.hs
+generated Generated/RefinedBase16/HashStore/EventStream.hs
+generated Generated/RefinedBase16/HashStore/Projection.hs
+generated Generated/RefinedBase16/HashStore/Harness.hs
+generated Generated/RefinedBase16/HashJobs/Queue.hs
+generated Generated/RefinedBase16/HashJobs/QueuePolicy.hs
+generated Generated/RefinedBase16/HashJobs/QueueCodec.hs
+generated Generated/RefinedBase16/HashLookup/ReadModelTable.hs
+generated Generated/RefinedBase16/HashLookup/QueryContract.hs
+generated Generated/RefinedBase16/HashLookup/ReadModel.hs
+hole RefinedBase16/HashLookup/ReadModelHoles.hs
+generated Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
+mapping {"bindingSymbol":"Conformance.RefinedBase16.Bindings.contentHashBinding","bindingVersion":"1","canonicalType":"conformance.refined-base16.ContentHash.v1","mode":"structural","module":"Conformance.RefinedBase16.Domain","package":"keiro-dsl","schema":1,"specName":"ContentHash","type":"ContentHash"}
+mapping {"bindingSymbol":"Conformance.RefinedBase16.Bindings.hashEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.refined-base16.HashEnvelope.v1","mode":"structural","module":"Conformance.RefinedBase16.Domain","package":"keiro-dsl","schema":1,"specName":"HashEnvelope","type":"HashEnvelope"}
+mapping {"bindingSymbol":"Conformance.RefinedBase16.Bindings.maybeContentHashBinding","bindingVersion":"1","canonicalType":"conformance.refined-base16.MaybeContentHash.v1","mode":"structural","module":"Conformance.RefinedBase16.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeContentHash","type":"MaybeContentHash"}
+binding {"kind":"binding","mappedName":"ContentHash","module":"Conformance.RefinedBase16.Bindings","path":"value","schema":1,"signature":"contentHashBinding.value :: ByteString","symbol":"contentHashBinding"}
+binding {"kind":"fixtures","mappedName":"ContentHash","module":"Conformance.RefinedBase16.Bindings","path":null,"schema":1,"signature":"contentHashFixtures :: FixtureCases Conformance.RefinedBase16.Domain.ContentHash","symbol":"contentHashFixtures"}
+binding {"kind":"initial-value","mappedName":"ContentHash","module":"Conformance.RefinedBase16.Bindings","path":null,"schema":1,"signature":"initialContentHash :: Conformance.RefinedBase16.Domain.ContentHash","symbol":"initialContentHash"}
+binding {"kind":"binding","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":"labelled","schema":1,"signature":"hashEnvelopeBinding.labelled :: Map Text (ContentHash)","symbol":"hashEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":"namedOptional","schema":1,"signature":"hashEnvelopeBinding.namedOptional :: MaybeContentHash","symbol":"hashEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":"optionalHash","schema":1,"signature":"hashEnvelopeBinding.optionalHash :: Maybe (ContentHash)","symbol":"hashEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":"primary","schema":1,"signature":"hashEnvelopeBinding.primary :: ContentHash","symbol":"hashEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":"sequence","schema":1,"signature":"hashEnvelopeBinding.sequence :: [ContentHash]","symbol":"hashEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"HashEnvelope","module":"Conformance.RefinedBase16.Bindings","path":null,"schema":1,"signature":"hashEnvelopeFixtures :: FixtureCases Conformance.RefinedBase16.Domain.HashEnvelope","symbol":"hashEnvelopeFixtures"}
+binding {"kind":"binding","mappedName":"MaybeContentHash","module":"Conformance.RefinedBase16.Bindings","path":"value","schema":1,"signature":"maybeContentHashBinding.value :: Maybe (ContentHash)","symbol":"maybeContentHashBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeContentHash","module":"Conformance.RefinedBase16.Bindings","path":null,"schema":1,"signature":"maybeContentHashFixtures :: FixtureCases Conformance.RefinedBase16.Domain.MaybeContentHash","symbol":"maybeContentHashFixtures"}
+behavior {"aggregate":"HashStore","command":"StoreHash","evidence":"generated-authoritative","key":"behavior-v1-3506774d4ee392a3","kind":"live-transition","outputs":[{"command":"StoreHash","ownership":"generated-command-identity"},{"command":"StoreHash","ownership":"generated-command-identity"}],"source":"Empty"}
+behavior {"aggregate":"HashStore","command":"ImportLegacyHash","evidence":"generated-authoritative","key":"behavior-v1-48110d655c1ffd6d","kind":"required-rejection","outputs":[],"source":"Stored"}
+behavior {"aggregate":"HashStore","command":"ImportLegacyHash","evidence":"generated-authoritative","key":"behavior-v1-9838f2b4bff837a3","kind":"required-rejection","outputs":[],"source":"Empty"}
+behavior {"aggregate":"HashStore","command":"StoreHash","evidence":"generated-authoritative","key":"behavior-v1-bf6e600d5467e6cc","kind":"required-rejection","outputs":[],"source":"Stored"}
+behavior {"aggregate":"HashStore","command":"ImportLegacyHash","evidence":"generated-authoritative","key":"behavior-v1-ec86c76d09301c82","kind":"replay-transition","outputs":[{"command":"ImportLegacyHash","ownership":"generated-command-identity"}],"source":"Empty"}
+projection-catalog-fact cursor|hash_lookup|hash-writer|106
+projection-catalog-fact delivery|hash_writer|subscription|94
+projection-catalog-fact freshness|hash_lookup|wait-for-head:entire-log|106
+projection-catalog-fact group|hash_rebuild|hash_table|hash_table|89
+projection-catalog-fact owner|hash_writer|all|hash_rebuild|hash_table|10|hash-writer|hash-writer-v1|from-beginning|explicit|94
+projection-catalog-fact query|hash_lookup|hash_rebuild|hash_table|hash_table|106
+projection-catalog-fact supply|hash_lookup|hash_writer|hash_rebuild|hash_table|106|94
+projection-catalog-fact target|hash_table|public|hash_values|clear||83
+query-contract-baseline v1
+query-contract {"mappedDependencies":["ContentHash","MaybeContentHash"],"position":"input","readModel":"hash_lookup","typeExpression":"MaybeContentHash"}
+query-contract {"mappedDependencies":["ContentHash","HashEnvelope","MaybeContentHash"],"position":"result","readModel":"hash_lookup","typeExpression":"HashEnvelope"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"HashStore","kind":"consumer-build"},{"consumer":"workqueue:hash_jobs","kind":"consumer-build"},{"consumer":"read-model-query:hash_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:hash_lookup:result","kind":"consumer-build"},{"aggregate":"HashStore","kind":"private-event-history"},{"aggregate":"HashStore","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"hash_jobs"},{"kind":"query-api","position":"input","readModel":"hash_lookup"},{"kind":"query-api","position":"result","readModel":"hash_lookup"}],"consumerEvidence":[{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .labelled {} : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .primary : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .sequence [] : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .hash : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .optionalHash : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .labelled {} : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .primary : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .sequence [] : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .hash : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .optionalHash : MaybeContentHash optional : ContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .labelled {} : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .primary : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .sequence [] : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .hash : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .optionalHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .labelled {} : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .primary : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .sequence [] : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .hash : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .optionalHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .labelled {} : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .primary : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .sequence [] : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .hash : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .optionalHash : MaybeContentHash optional : ContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore register current : ContentHash","surface":"snapshot-register"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .labelled {} : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .optionalHash optional : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .primary : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .sequence [] : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .hash : ContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .optionalHash : MaybeContentHash optional : ContentHash","surface":"workqueue-payload"},{"consumer":"read-model-query:hash_lookup:input","operation":null,"path":"readmodel hash_lookup query input : MaybeContentHash optional : ContentHash","surface":"read-model-query-input"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .labelled {} : ContentHash","surface":"read-model-query-result"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .namedOptional : MaybeContentHash optional : ContentHash","surface":"read-model-query-result"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .optionalHash optional : ContentHash","surface":"read-model-query-result"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .primary : ContentHash","surface":"read-model-query-result"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .sequence [] : ContentHash","surface":"read-model-query-result"}],"consumers":["HashStore","workqueue:hash_jobs","read-model-query:hash_lookup:input","read-model-query:hash_lookup:result"],"declaration":"ContentHash","identity":"structural\u001fkeiro-dsl:Conformance.RefinedBase16.Domain:ContentHash\u001fConformance.RefinedBase16.Bindings.contentHashBinding\u001f1\u001fconformance.refined-base16.ContentHash.v1\u001fConformance.RefinedBase16.Bindings.contentHashFixtures\u001fConformance.RefinedBase16.Bindings.initialContentHash\u001f9a76d13837d002d3\u001frefined:base16-bytes-v1"},{"consequences":[{"consumer":"HashStore","kind":"consumer-build"},{"consumer":"workqueue:hash_jobs","kind":"consumer-build"},{"consumer":"read-model-query:hash_lookup:result","kind":"consumer-build"},{"aggregate":"HashStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"hash_jobs"},{"kind":"query-api","position":"result","readModel":"hash_lookup"}],"consumerEvidence":[{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope","surface":"private-event-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope","surface":"workqueue-payload"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope","surface":"read-model-query-result"}],"consumers":["HashStore","workqueue:hash_jobs","read-model-query:hash_lookup:result"],"declaration":"HashEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.RefinedBase16.Domain:HashEnvelope\u001fConformance.RefinedBase16.Bindings.hashEnvelopeBinding\u001f1\u001fconformance.refined-base16.HashEnvelope.v1\u001fConformance.RefinedBase16.Bindings.hashEnvelopeFixtures\u001f\u001f947d678c5b0f5d2d\u001frecord:HashEnvelope:labelled=labelled,namedOptional=namedOptional,optionalHash=optionalHash,primary=primary,sequence=sequence"},{"consequences":[{"consumer":"HashStore","kind":"consumer-build"},{"consumer":"workqueue:hash_jobs","kind":"consumer-build"},{"consumer":"read-model-query:hash_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:hash_lookup:result","kind":"consumer-build"},{"aggregate":"HashStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"hash_jobs"},{"kind":"query-api","position":"input","readModel":"hash_lookup"},{"kind":"query-api","position":"result","readModel":"hash_lookup"}],"consumerEvidence":[{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command ImportLegacyHash .optionalHash : MaybeContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore command StoreHash .optionalHash : MaybeContentHash","surface":"aggregate-command"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashAudited .optionalHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event HashStored .optionalHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"private-event-payload"},{"consumer":"HashStore","operation":null,"path":"HashStore event LegacyHashImported .optionalHash : MaybeContentHash","surface":"private-event-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .envelope : HashEnvelope .namedOptional : MaybeContentHash","surface":"workqueue-payload"},{"consumer":"workqueue:hash_jobs","operation":null,"path":"workqueue hash_jobs payload .optionalHash : MaybeContentHash","surface":"workqueue-payload"},{"consumer":"read-model-query:hash_lookup:input","operation":null,"path":"readmodel hash_lookup query input : MaybeContentHash","surface":"read-model-query-input"},{"consumer":"read-model-query:hash_lookup:result","operation":null,"path":"readmodel hash_lookup query result : HashEnvelope .namedOptional : MaybeContentHash","surface":"read-model-query-result"}],"consumers":["HashStore","workqueue:hash_jobs","read-model-query:hash_lookup:input","read-model-query:hash_lookup:result"],"declaration":"MaybeContentHash","identity":"structural\u001fkeiro-dsl:Conformance.RefinedBase16.Domain:MaybeContentHash\u001fConformance.RefinedBase16.Bindings.maybeContentHashBinding\u001f1\u001fconformance.refined-base16.MaybeContentHash.v1\u001fConformance.RefinedBase16.Bindings.maybeContentHashFixtures\u001f\u001fb30e54ecc09e6b84\u001fvalue:Optional(Ref(ContentHash))"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["ContentHash","HashEnvelope","MaybeContentHash"]}
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.17.0.0 (language keiro-dsl 4) from context replay-divergence behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context replay-divergence replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural Limits; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.18.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/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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context workspace-proof behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context workspace-proof service conformance facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context workspace-proof replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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/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.17.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.18.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-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.17.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from bound nominal enum representation Channel; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves nominal scalar projection facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from projection-catalog structural-nominal-leaves; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural TemplateBook; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupInput; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupRow; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural TemplateRef; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural TemplateState; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context structural-nominal-leaves mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
+-- @generated by keiro-dsl 0.18.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-nominals/keiro-dsl-cabal-fragment.context.structural-nominal-leaves.txt b/test/conformance-structural-nominals/keiro-dsl-cabal-fragment.context.structural-nominal-leaves.txt
--- a/test/conformance-structural-nominals/keiro-dsl-cabal-fragment.context.structural-nominal-leaves.txt
+++ b/test/conformance-structural-nominals/keiro-dsl-cabal-fragment.context.structural-nominal-leaves.txt
@@ -50,6 +50,7 @@
 build-depends:
     , aeson
     , base
+    , containers
     , effectful-core
     , hasql-transaction
     , keiki
diff --git a/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Bindings.hs b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Bindings.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
+
+-- This is a HAND-OWNED consumer binding skeleton. keiro-dsl creates it once
+-- and never overwrites it. Fill each HOLE and run the generated harness.
+module Conformance.StructuralTextSets.Bindings (
+    initialTextLabels
+  , textLabelsFixtures
+  , textLabelsBinding
+  , maybeTextLabelsFixtures
+  , maybeTextLabelsBinding
+  , labelEnvelopeFixtures
+  , labelEnvelopeBinding
+) where
+
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels, TextLabels)
+import Conformance.StructuralTextSets.Domain qualified as Domain
+import Generated.StructuralTextSets.Structural.Shape.LabelEnvelope qualified as ShapeLabelEnvelope
+import Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels qualified as ShapeMaybeTextLabels
+import Generated.StructuralTextSets.Structural.Shape.TextLabels qualified as ShapeTextLabels
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.Map.Strict qualified as Map
+import Data.Set qualified as Set
+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))
+
+-- HOLE: provide the initial register value for TextLabels
+initialTextLabels :: TextLabels
+initialTextLabels = Domain.TextLabels Set.empty
+
+-- HOLE: provide deterministic labelled conformance fixtures for TextLabels
+textLabelsFixtures :: FixtureCases TextLabels
+textLabelsFixtures =
+  FixtureCases
+    ( ("empty", initialTextLabels)
+        :| [ ("ordinary", Domain.TextLabels (Set.fromList ["a", "b"])),
+             ("code-point-order", Domain.TextLabels (Set.fromList ["\x10000", "\xE000", "ä", "a\x0308", "a", "A"]))
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+textLabelsBinding :: StructuralBinding TextLabels ShapeTextLabels.TextLabelsShape
+textLabelsBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.TextLabels value -> value
+    , bindingFromShape = \case
+      value -> Domain.TextLabels value
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for MaybeTextLabels
+maybeTextLabelsFixtures :: FixtureCases MaybeTextLabels
+maybeTextLabelsFixtures =
+  FixtureCases
+    ( ("absent", Domain.MaybeTextLabels Nothing)
+        :| [ ("present-empty", Domain.MaybeTextLabels (Just Set.empty)),
+             ("present", Domain.MaybeTextLabels (Just (Set.fromList ["a", "b"])))
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+maybeTextLabelsBinding :: StructuralBinding MaybeTextLabels ShapeMaybeTextLabels.MaybeTextLabelsShape
+maybeTextLabelsBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.MaybeTextLabels value -> value
+    , bindingFromShape = \case
+      value -> Domain.MaybeTextLabels value
+    }
+
+-- HOLE: provide deterministic labelled conformance fixtures for LabelEnvelope
+labelEnvelopeFixtures :: FixtureCases LabelEnvelope
+labelEnvelopeFixtures =
+  FixtureCases
+    ( ( "empty-branches",
+        Domain.LabelEnvelope
+          Set.empty
+          Nothing
+          (Domain.MaybeTextLabels Nothing)
+          [Set.empty]
+          (Map.fromList [("empty", Set.empty)])
+      )
+        :| [ ( "nested",
+               Domain.LabelEnvelope
+                 (Set.fromList ["b", "a"])
+                 (Just (Set.fromList ["z", "y"]))
+                 (Domain.MaybeTextLabels (Just (Set.fromList ["named", "optional"])))
+                 [Set.fromList ["second", "first"], Set.fromList ["singleton"]]
+                 (Map.fromList [("unicode", Set.fromList ["\x10000", "\xE000", "a\x0308", "ä"])])
+             )
+           ]
+    )
+
+-- HOLE: complete both total directions; wire policy remains in the generated codec.
+labelEnvelopeBinding :: StructuralBinding LabelEnvelope ShapeLabelEnvelope.LabelEnvelopeShape
+labelEnvelopeBinding =
+  StructuralBinding
+    { bindingToShape = \case
+      Domain.LabelEnvelope primaryValue optionalLabelsValue namedOptionalValue sequenceValue labelledValue ->
+        ShapeLabelEnvelope.LabelEnvelope
+          primaryValue
+          optionalLabelsValue
+          (bindingToShape maybeTextLabelsBinding namedOptionalValue)
+          sequenceValue
+          labelledValue
+    , bindingFromShape = \case
+      ShapeLabelEnvelope.LabelEnvelope primaryValue optionalLabelsValue namedOptionalValue sequenceValue labelledValue ->
+        Domain.LabelEnvelope
+          primaryValue
+          optionalLabelsValue
+          (bindingFromShape maybeTextLabelsBinding namedOptionalValue)
+          sequenceValue
+          labelledValue
+    }
diff --git a/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Domain.hs b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Domain.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Conformance.StructuralTextSets.Domain where
+
+import Data.Aeson (FromJSON, ToJSON)
+import Data.Map.Strict (Map)
+import Data.Proxy (Proxy)
+import Data.Set (Set)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Keiki.Shape (CanonicalTypeName (..))
+
+newtype TextLabels = TextLabels {unTextLabels :: Set Text}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName TextLabels where
+  canonicalTypeName :: Proxy TextLabels -> Text
+  canonicalTypeName _ = "conformance.structural-text-sets.TextLabels.v1"
+
+newtype MaybeTextLabels = MaybeTextLabels {unMaybeTextLabels :: Maybe (Set Text)}
+  deriving stock (Eq, Generic, Show)
+  deriving newtype (FromJSON, ToJSON)
+
+instance CanonicalTypeName MaybeTextLabels where
+  canonicalTypeName :: Proxy MaybeTextLabels -> Text
+  canonicalTypeName _ = "conformance.structural-text-sets.MaybeTextLabels.v1"
+
+data LabelEnvelope = LabelEnvelope
+  { primary :: !(Set Text),
+    optionalLabels :: !(Maybe (Set Text)),
+    namedOptional :: !MaybeTextLabels,
+    sequence :: ![Set Text],
+    labelled :: !(Map Text (Set Text))
+  }
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON)
+
+instance CanonicalTypeName LabelEnvelope where
+  canonicalTypeName :: Proxy LabelEnvelope -> Text
+  canonicalTypeName _ = "conformance.structural-text-sets.LabelEnvelope.v1"
diff --git a/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Historical.hs b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Historical.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Conformance/StructuralTextSets/Historical.hs
@@ -0,0 +1,31 @@
+module Conformance.StructuralTextSets.Historical
+  ( historicalTextLabelsCodec,
+    historicalMaybeTextLabelsCodec,
+  )
+where
+
+import Conformance.StructuralTextSets.Domain (MaybeTextLabels (..), TextLabels (..))
+import Data.Aeson (parseJSON, toJSON)
+import Data.Aeson.Types (parseEither)
+import Data.Text qualified as T
+import Keiro.Dsl.CodecCompare (HistoricalCodec (..))
+
+-- These fixtures model the consumer's pre-adoption Aeson Set instances. They
+-- are compatibility evidence only and are never used as runtime fallbacks.
+historicalTextLabelsCodec :: HistoricalCodec TextLabels
+historicalTextLabelsCodec =
+  HistoricalCodec
+    { identity = "conformance.structural-text-sets.TextLabels.aeson-set",
+      version = "aeson-2.2",
+      encode = \(TextLabels value) -> toJSON value,
+      decode = either (Left . T.pack) (Right . TextLabels) . parseEither parseJSON
+    }
+
+historicalMaybeTextLabelsCodec :: HistoricalCodec MaybeTextLabels
+historicalMaybeTextLabelsCodec =
+  HistoricalCodec
+    { identity = "conformance.structural-text-sets.MaybeTextLabels.aeson-set",
+      version = "aeson-2.2",
+      encode = \(MaybeTextLabels value) -> toJSON value,
+      decode = either (Left . T.pack) (Right . MaybeTextLabels) . parseEither parseJSON
+    }
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs
@@ -0,0 +1,33 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context structural-text-sets behavior source map; do not edit.
+module Generated.StructuralTextSets.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-21ff727d241ecd71" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/structural-text-sets.keiro" 55 3)
+  "behavior-v1-3fe9a1bf4f7fe73f" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/structural-text-sets.keiro" 41 16)
+  "behavior-v1-7f54aab10d4d248f" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/structural-text-sets.keiro" 41 10)
+  "behavior-v1-bf90d9e010468fdc" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/structural-text-sets.keiro" 49 3)
+  "behavior-v1-c15c80eb55d3be38" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/structural-text-sets.keiro" 41 16)
+  _ -> 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-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs
@@ -0,0 +1,130 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
+module Generated.StructuralTextSets.LabelJobs.Queue
+  ( LabelJob (..)
+  , encodeLabelJob
+  , parseLabelJob
+  , encodeLabelEnvelopeMapped
+  , decodeLabelEnvelopeMapped
+  , encodeMaybeTextLabelsMapped
+  , decodeMaybeTextLabelsMapped
+  , encodeTextLabelsMapped
+  , decodeTextLabelsMapped
+  , queuePhysical, queueDlq, queueTable
+
+  ) where
+
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)
+import Conformance.StructuralTextSets.Bindings qualified as Bindings
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels, TextLabels)
+import Generated.StructuralTextSets.Structural.Shape.LabelEnvelope qualified as ShapeLabelEnvelope
+import Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels qualified as ShapeMaybeTextLabels
+import Generated.StructuralTextSets.Structural.Shape.TextLabels qualified as ShapeTextLabels
+
+queuePhysical, queueDlq, queueTable :: Text
+queuePhysical = "label_jobs"
+queueDlq = "label_jobs_dlq"
+queueTable = "pgmq.q_label_jobs"
+
+data LabelJob = LabelJob
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Eq, Show)
+
+encodeLabelEnvelopeMapped :: LabelEnvelope -> Value
+encodeLabelEnvelopeMapped = encodeLabelEnvelopeShape . bindingToShape Bindings.labelEnvelopeBinding
+
+parseLabelEnvelopeMapped :: Value -> Parser LabelEnvelope
+parseLabelEnvelopeMapped value = bindingFromShape Bindings.labelEnvelopeBinding <$> parseLabelEnvelopeShape value
+
+decodeLabelEnvelopeMapped :: Value -> Either Text LabelEnvelope
+decodeLabelEnvelopeMapped = mapLeftText . parseEither parseLabelEnvelopeMapped
+
+encodeLabelEnvelopeShape :: ShapeLabelEnvelope.LabelEnvelopeShape -> Value
+encodeLabelEnvelopeShape shape =
+  object
+      [ "primary" .= encodeTextSet (shape.primary)
+      , "optionalLabels" .= maybe Null (\item0 -> encodeTextSet (item0)) (shape.optionalLabels)
+      , "namedOptional" .= encodeMaybeTextLabelsShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeTextSet (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeTextSet (item0)) (shape.labelled))
+      ]
+
+parseLabelEnvelopeShape :: Value -> Parser ShapeLabelEnvelope.LabelEnvelopeShape
+parseLabelEnvelopeShape = withObject "LabelEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "LabelEnvelope" ["primary", "optionalLabels", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeLabelEnvelope.LabelEnvelope
+    <$> explicitParseField (parseTextSet) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0) objectValue "optionalLabels"
+    <*> explicitParseField (parseMaybeTextLabelsShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseTextSet) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseTextSet) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeMaybeTextLabelsMapped :: MaybeTextLabels -> Value
+encodeMaybeTextLabelsMapped = encodeMaybeTextLabelsShape . bindingToShape Bindings.maybeTextLabelsBinding
+
+parseMaybeTextLabelsMapped :: Value -> Parser MaybeTextLabels
+parseMaybeTextLabelsMapped value = bindingFromShape Bindings.maybeTextLabelsBinding <$> parseMaybeTextLabelsShape value
+
+decodeMaybeTextLabelsMapped :: Value -> Either Text MaybeTextLabels
+decodeMaybeTextLabelsMapped = mapLeftText . parseEither parseMaybeTextLabelsMapped
+
+encodeMaybeTextLabelsShape :: ShapeMaybeTextLabels.MaybeTextLabelsShape -> Value
+encodeMaybeTextLabelsShape value = maybe Null (\item0 -> encodeTextSet (item0)) (value)
+
+parseMaybeTextLabelsShape :: Value -> Parser ShapeMaybeTextLabels.MaybeTextLabelsShape
+parseMaybeTextLabelsShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0
+
+encodeTextLabelsMapped :: TextLabels -> Value
+encodeTextLabelsMapped = encodeTextLabelsShape . bindingToShape Bindings.textLabelsBinding
+
+parseTextLabelsMapped :: Value -> Parser TextLabels
+parseTextLabelsMapped value = bindingFromShape Bindings.textLabelsBinding <$> parseTextLabelsShape value
+
+decodeTextLabelsMapped :: Value -> Either Text TextLabels
+decodeTextLabelsMapped = mapLeftText . parseEither parseTextLabelsMapped
+
+encodeTextLabelsShape :: ShapeTextLabels.TextLabelsShape -> Value
+encodeTextLabelsShape value = encodeTextSet (value)
+
+parseTextLabelsShape :: Value -> Parser ShapeTextLabels.TextLabelsShape
+parseTextLabelsShape = parseTextSet
+
+encodeLabelJob :: LabelJob -> Value
+encodeLabelJob payload =
+  object
+    [ "labels" .= encodeTextLabelsMapped payload.labels
+    , "optional_labels" .= encodeMaybeTextLabelsMapped payload.optionalLabels
+    , "envelope" .= encodeLabelEnvelopeMapped payload.envelope
+    ]
+
+parseLabelJob :: Value -> Either Text LabelJob
+parseLabelJob = mapLeftText . parseEither (withObject "LabelJob" go)
+  where
+    go objectValue = LabelJob <$> explicitParseField (parseTextLabelsMapped) objectValue "labels" <*> explicitParseField (parseMaybeTextLabelsMapped) objectValue "optional_labels" <*> explicitParseField (parseLabelEnvelopeMapped) objectValue "envelope"
+
+mapLeftText :: Either String b -> Either Text b
+mapLeftText = either (Left . T.pack) Right
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
@@ -0,0 +1,29 @@
+-- @generated by keiro-dsl 0.18.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
+-- adopt this codec on a non-empty bare-payload queue without draining it
+-- (or supplying a transitional codec), or in-flight messages will
+-- dead-letter. This is telemetry-neutral:
+-- docs/adr/0001-keiro-pgmq-job-processing-telemetry-contract.md owns
+-- spans and acknowledgement vocabulary.
+module Generated.StructuralTextSets.LabelJobs.QueueCodec (labelJobsPayloadCodec, labelJobsJobCodec) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec (Codec (..), EventType (..))
+import Keiro.PGMQ.Codec (JobCodec, keiroJobCodec)
+import Generated.StructuralTextSets.LabelJobs.Queue (LabelJob, encodeLabelJob, parseLabelJob)
+
+labelJobsPayloadCodec :: Codec LabelJob
+labelJobsPayloadCodec =
+  Codec
+    { eventTypes = EventType "LabelJob" :| []
+    , eventType = \_ -> EventType "LabelJob"
+    , schemaVersion = 1
+    , encode = encodeLabelJob
+    , decode = \_ -> parseLabelJob
+    , upcasters = []
+    }
+
+labelJobsJobCodec :: JobCodec LabelJob
+labelJobsJobCodec = keiroJobCodec labelJobsPayloadCodec
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
@@ -0,0 +1,43 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
+module Generated.StructuralTextSets.LabelJobs.QueuePolicy
+  ( LabelJobsOutcome (..)
+  , retryPolicy, jobOutcomeFor
+  , jobOrdering, jobTuningFor, queueProvision
+  ) where
+
+import Keiro.PGMQ.Job (JobOrdering (..), JobOutcome (..), JobTuning, QueueProvision, RetryDelay (..), RetryPolicy (..), standardProvision, withOrdering)
+
+jobOrdering :: JobOrdering
+jobOrdering = Unordered
+
+-- Deployment owns a positive batch size, visibility timeout, and polling; the spec owns ordering. Legacy FIFO modes reject batch sizes greater than one.
+jobTuningFor :: JobTuning -> JobTuning
+jobTuningFor = withOrdering jobOrdering
+
+-- Pass this to ensureJobQueueWith at worker startup. FIFO adds the required GIN index; the DLQ remains standard.
+queueProvision :: QueueProvision
+queueProvision = standardProvision
+
+retryPolicy :: RetryPolicy
+retryPolicy =
+  RetryPolicy
+    { maxRetries = 3
+    , defaultRetryDelay = RetryDelay 1
+    , useDeadLetter = True
+    }
+
+-- The consumer JobOutcome disposition over the spec's named domain outcomes,
+-- lowered to the live Keiro.PGMQ.Job.JobOutcome.
+data LabelJobsOutcome
+  = StoreFailure
+  | CommandRejected
+  | DecodeFailure
+  | OnCodecReject
+  deriving stock (Eq, Show)
+
+jobOutcomeFor :: LabelJobsOutcome -> JobOutcome
+jobOutcomeFor o = case o of
+  StoreFailure -> Retry (RetryDelay 1)
+  CommandRejected -> Dead "dead-lettered"
+  DecodeFailure -> Dead "dead-lettered"
+  OnCodecReject -> Dead "dead-lettered"
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs
@@ -0,0 +1,10 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+module Generated.StructuralTextSets.LabelLookup.QueryContract
+  ( LabelLookupQueryInput
+  , LabelLookupQueryResult
+  ) where
+
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels)
+
+type LabelLookupQueryInput = MaybeTextLabels
+type LabelLookupQueryResult = LabelEnvelope
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs
@@ -0,0 +1,28 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+module Generated.StructuralTextSets.LabelLookup.ReadModel
+  ( labelLookupReadModel
+  , labelLookupQualifiedTable
+  ) where
+
+import Generated.StructuralTextSets.LabelLookup.ReadModelTable (labelLookupQualifiedTable)
+import Generated.StructuralTextSets.LabelLookup.QueryContract (LabelLookupQueryInput, LabelLookupQueryResult)
+import StructuralTextSets.LabelLookup.ReadModelHoles (labelLookupQuery)
+import Keiro.ReadModel (QueryCursorAuthority (..), ReadModel, ReadModelBlueprint (..), HeadScope (..), headWaitingReadModel)
+
+labelLookupReadModel :: ReadModel LabelLookupQueryInput LabelLookupQueryResult
+labelLookupReadModel =
+  case headWaitingReadModel EntireVisibleLog labelLookupReadModelBlueprint of
+    Left definitionError -> error ("keiro-dsl generated an invalid waiting read model: " <> show definitionError)
+    Right model -> model
+
+labelLookupReadModelBlueprint :: ReadModelBlueprint LabelLookupQueryInput LabelLookupQueryResult
+labelLookupReadModelBlueprint =
+  ReadModelBlueprint
+    { name = "structural-text-sets-label-lookup"
+    , tableName = "label_values"
+    , schema = "public"
+    , version = 1
+    , shapeHash = "fnv1a:3c07a19c552c3547"
+    , cursorAuthority = DurableQueryCursor "label-writer"
+    , query = labelLookupQuery
+    }
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
@@ -0,0 +1,57 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text qualified as T
+import Data.List.NonEmpty qualified as NE
+import Generated.StructuralTextSets.ProjectionCatalog qualified as ProjectionCatalog
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel (ReadModel (..), readModelCursorAuthority, readModelDefaultFreshness)
+
+-- | (fact, expected from notation, actual generated runtime value).
+readModelFacts :: [(String, String, String)]
+readModelFacts =
+  [ ("registryName", "structural-text-sets-label-lookup", T.unpack labelLookupReadModel.name)
+  , ("shapeHash", "fnv1a:3c07a19c552c3547", T.unpack labelLookupReadModel.shapeHash)
+  , ("freshness", "WaitForHead EntireVisibleLog", show (readModelDefaultFreshness labelLookupReadModel))
+  , ("cursorAuthority", "DurableQueryCursor \"label-writer\"", show (readModelCursorAuthority labelLookupReadModel))
+  ]
+    <> catalogFactsAgainst ProjectionCatalog.projectionCatalogRegistrations ProjectionCatalog.projectionCatalogAsyncRegistrations ProjectionCatalog.projectionCatalogQuerySupplies
+
+catalogFactsAgainst :: [Catalog.CatalogRegistration] -> [Catalog.AsyncProjectionRegistration] -> [Catalog.ResolvedQuerySupply] -> [(String, String, String)]
+catalogFactsAgainst registrations asyncRegistrations supplies =
+  [ ("catalogRegistration", "structural-text-sets-label-lookup|1|fnv1a:3c07a19c552c3547|label_rebuild", renderRegistration [entry | entry <- registrations, Catalog.queryModelIdText entry.queryModelId == "label_lookup"])
+  , ("querySupply", "label_writer|label_rebuild|label_table", renderSupply [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "label_lookup"])
+  , ("projectionDelivery", "subscription", renderDelivery [entry | entry <- supplies, Catalog.queryModelIdText entry.resolvedQueryModelId == "label_lookup"])
+  , ("asyncRegistration:label_writer", "label-writer|label-writer-v1", renderAsync [entry | entry <- asyncRegistrations, Catalog.projectionIdText entry.projectionId == "label_writer"])
+  ]
+
+renderRegistration :: [Catalog.CatalogRegistration] -> String
+renderRegistration [entry] = T.unpack entry.registryName <> "|" <> show entry.version <> "|" <> T.unpack entry.shapeHash <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.rebuildGroupId)
+renderRegistration _ = "missing"
+
+renderSupply :: [Catalog.ResolvedQuerySupply] -> String
+renderSupply [entry] = T.unpack (Catalog.projectionIdText entry.resolvedProjectionId) <> "|" <> T.unpack (Catalog.rebuildGroupIdText entry.resolvedRebuildGroupId) <> "|" <> T.unpack (T.intercalate "," (map Catalog.targetIdText (NE.toList entry.resolvedObservedTargets)))
+renderSupply _ = "missing"
+
+renderDelivery :: [Catalog.ResolvedQuerySupply] -> String
+renderDelivery [entry] = T.unpack (T.intercalate "," (map renderCapability (NE.toList entry.resolvedHandlerCapabilities)))
+renderDelivery _ = "missing"
+
+renderCapability :: Catalog.ProjectionHandlerCapability -> T.Text
+renderCapability Catalog.InlineCapability {} = "inline"
+renderCapability Catalog.SubscriptionCapability {} = "subscription"
+
+renderAsync :: [Catalog.AsyncProjectionRegistration] -> String
+renderAsync [entry] = T.unpack entry.subscriptionName <> "|" <> T.unpack entry.dedupName
+renderAsync _ = "missing"
+
+readModelFactResults :: [(String, Bool)]
+readModelFactResults =
+  [(fact, expected == actual) | (fact, expected, actual) <- readModelFacts]
+
+runReadModelFacts :: IO Bool
+runReadModelFacts = do
+  let failures = [(fact, expected, actual) | (fact, expected, actual) <- readModelFacts, expected /= actual]
+  mapM_ (\(fact, expected, actual) -> putStrLn ("FAIL  " <> fact <> " expected=" <> show expected <> " actual=" <> show actual)) failures
+  pure (null failures)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
@@ -0,0 +1,9 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+module Generated.StructuralTextSets.LabelLookup.ReadModelTable (labelLookupQualifiedTable) where
+
+import Data.Text (Text)
+import Keiro.Connection (qualifyTable)
+
+-- The fully-qualified, double-quoted data-table reference.
+labelLookupQualifiedTable :: Text
+labelLookupQualifiedTable = qualifyTable "public" "label_values"
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
@@ -0,0 +1,387 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.BehaviorContract
+  ( BehaviorKey (..)
+  , unBehaviorKey
+  , ObligationKind (..)
+  , EvidenceLevel (..)
+  , GuardCoverage (..)
+  , BehaviorRequirement (..)
+  , RejectionClass (..)
+  , LiveExpectation (..)
+  , BehaviorWitness (..)
+  , BehaviorFailure (..)
+  , BehaviorConformanceReport (..)
+  , behaviorRequirements
+  , behaviorCoverageReport
+  , behaviorConformancePassed
+  , behaviorConformancePassedWith
+  , renderBehaviorConformanceText
+  ) where
+
+import Generated.StructuralTextSets.LabelStore.Codec (encodeLabelStoreEvent, parseLabelStoreEvent, labelStoreCodec)
+import Generated.StructuralTextSets.LabelStore.Domain
+import Generated.StructuralTextSets.LabelStore.Transducer (labelStoreTransducer)
+import Generated.StructuralTextSets.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 :: !LabelStoreVertex
+  , commandName :: !Text
+  , expectedEdge :: !(Maybe (K.EdgeRef LabelStoreVertex))
+  , target :: !(Maybe LabelStoreVertex)
+  , eventKinds :: ![Text]
+  }
+  deriving stock (Eq, Show)
+
+data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge
+  deriving stock (Eq, Show)
+
+data LiveExpectation
+  = Emits (NonEmpty LabelStoreEvent)
+  | Rejects RejectionClass
+  | NoOp
+  deriving stock (Eq, Show)
+
+data BehaviorWitness
+  = Pending BehaviorKey
+  | LiveWitness
+      { key :: BehaviorKey
+      , history :: [LabelStoreEvent]
+      , command :: LabelStoreCommand
+      , expected :: LiveExpectation
+      }
+  | ReplayWitness
+      { key :: BehaviorKey
+      , historyPrefix :: [LabelStoreEvent]
+      , observedChunk :: [LabelStoreEvent]
+      }
+  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 =
+  [ -- LabelStoreEmpty x ImportLegacyLabels: replay-only transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-21ff727d241ecd71"
+      , kind = ReplayTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = LabelStoreEmpty
+      , commandName = "ImportLegacyLabels"
+      , expectedEdge = (Just (K.EdgeRef LabelStoreEmpty 1))
+      , target = Just LabelStoreStored
+      , eventKinds = ["LegacyLabelsImported"]
+      }
+  , -- LabelStoreStored x ImportLegacyLabels: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-3fe9a1bf4f7fe73f"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = LabelStoreStored
+      , commandName = "ImportLegacyLabels"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- LabelStoreEmpty x ImportLegacyLabels: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-7f54aab10d4d248f"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = LabelStoreEmpty
+      , commandName = "ImportLegacyLabels"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  , -- LabelStoreEmpty x StoreLabels: live transition
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-bf90d9e010468fdc"
+      , kind = LiveTransition
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardTotal
+      , source = LabelStoreEmpty
+      , commandName = "StoreLabels"
+      , expectedEdge = (Just (K.EdgeRef LabelStoreEmpty 0))
+      , target = Just LabelStoreStored
+      , eventKinds = ["LabelsStored", "LabelsAudited"]
+      }
+  , -- LabelStoreStored x StoreLabels: required rejection
+    BehaviorRequirement
+      { key = BehaviorKey "behavior-v1-c15c80eb55d3be38"
+      , kind = RequiredRejection
+      , evidence = GeneratedAuthoritative
+      , guardCoverage = GuardNotApplicable
+      , source = LabelStoreStored
+      , commandName = "StoreLabels"
+      , expectedEdge = Nothing
+      , target = Nothing
+      , eventKinds = []
+      }
+  ]
+
+behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport
+behaviorCoverageReport 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 <- behaviorRequirements]
+  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: LabelStore"
+  , "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 -> [LabelStoreEvent] -> LabelStoreCommand -> 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 -> (LabelStoreVertex, K.RegFile LabelStoreRegs) -> LabelStoreCommand -> 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 labelStoreTransducer 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 -> (LabelStoreVertex, K.RegFile LabelStoreRegs) -> LabelStoreCommand -> 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 labelStoreTransducer 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 labelStoreTransducer 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 labelStoreTransducer 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 LabelStoreRegs LabelStoreVertex LabelStoreEvent -> 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 -> [LabelStoreEvent] -> [LabelStoreEvent] -> 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 labelStoreTransducer (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 LabelStoreVertex] -> 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 -> [LabelStoreEvent] -> Either BehaviorFailure (K.ReplaySuccess LabelStoreRegs LabelStoreVertex)
+settleHistory requirement label history = do
+  decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)
+  case K.applyEventsDetailedEither labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) decoded of
+    Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)
+    Right replaySuccess -> Right replaySuccess
+
+decodeEvents :: [LabelStoreEvent] -> Either Text [LabelStoreEvent]
+decodeEvents = traverse (\event -> parseLabelStoreEvent (Codec.eventType labelStoreCodec event) (encodeLabelStoreEvent event))
+
+commandKind :: LabelStoreCommand -> Text
+commandKind command = case command of
+  StoreLabels _ -> "StoreLabels"
+  ImportLegacyLabels _ -> "ImportLegacyLabels"
+
+eventKind :: LabelStoreEvent -> Text
+eventKind event = case Codec.eventType labelStoreCodec event of Codec.EventType tag -> tag
+
+regsEqual :: K.RegFile LabelStoreRegs -> K.RegFile LabelStoreRegs -> Bool
+regsEqual left right = (left K.! #current) == (right K.! #current)
+
+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-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs
@@ -0,0 +1,187 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.Codec (
+    labelStoreCodec,
+    parseLabelStoreEvent,
+    encodeLabelStoreEvent,
+    encodeLabelEnvelopeMapped,
+    decodeLabelEnvelopeMapped,
+    encodeMaybeTextLabelsMapped,
+    decodeMaybeTextLabelsMapped,
+    encodeTextLabelsMapped,
+    decodeTextLabelsMapped,
+) where
+
+import Generated.StructuralTextSets.LabelStore.Domain
+import Control.Monad (unless)
+import Data.Aeson (Value (..), object, parseJSON, toJSON, withObject, (.=))
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (Parser, JSONPathElement (..), (<?>), explicitParseField, parseEither)
+import Data.List.NonEmpty (NonEmpty (..))
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict (Map)
+import Data.Map.Strict qualified as Map
+import Data.Text (Text)
+import qualified Data.Text as T
+import Keiro.Codec.TextSet (encodeTextSet, parseTextSet)
+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)
+import Keiro.Codec (Codec (..), EventType (..))
+
+
+import Conformance.StructuralTextSets.Bindings qualified as Bindings
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels, TextLabels)
+import Generated.StructuralTextSets.Structural.Shape.LabelEnvelope qualified as ShapeLabelEnvelope
+import Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels qualified as ShapeMaybeTextLabels
+import Generated.StructuralTextSets.Structural.Shape.TextLabels qualified as ShapeTextLabels
+
+
+
+encodeLabelEnvelopeMapped :: LabelEnvelope -> Value
+encodeLabelEnvelopeMapped = encodeLabelEnvelopeShape . bindingToShape Bindings.labelEnvelopeBinding
+
+parseLabelEnvelopeMapped :: Value -> Parser LabelEnvelope
+parseLabelEnvelopeMapped value = bindingFromShape Bindings.labelEnvelopeBinding <$> parseLabelEnvelopeShape value
+
+decodeLabelEnvelopeMapped :: Value -> Either Text LabelEnvelope
+decodeLabelEnvelopeMapped = mapLeftText . parseEither parseLabelEnvelopeMapped
+
+encodeLabelEnvelopeShape :: ShapeLabelEnvelope.LabelEnvelopeShape -> Value
+encodeLabelEnvelopeShape shape =
+  object
+      [ "primary" .= encodeTextSet (shape.primary)
+      , "optionalLabels" .= maybe Null (\item0 -> encodeTextSet (item0)) (shape.optionalLabels)
+      , "namedOptional" .= encodeMaybeTextLabelsShape (shape.namedOptional)
+      , "sequence" .= toJSON (map (\item0 -> encodeTextSet (item0)) (shape.sequence))
+      , "labelled" .= toJSON (Map.map (\item0 -> encodeTextSet (item0)) (shape.labelled))
+      ]
+
+parseLabelEnvelopeShape :: Value -> Parser ShapeLabelEnvelope.LabelEnvelopeShape
+parseLabelEnvelopeShape = withObject "LabelEnvelopeShape" $ \objectValue -> do
+  rejectUnknownFields "LabelEnvelope" ["primary", "optionalLabels", "namedOptional", "sequence", "labelled"] objectValue
+  ShapeLabelEnvelope.LabelEnvelope
+    <$> explicitParseField (parseTextSet) objectValue "primary"
+    <*> parseOptionalField (pure Nothing) (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0) objectValue "optionalLabels"
+    <*> explicitParseField (parseMaybeTextLabelsShape) objectValue "namedOptional"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser [Value]); traverse (\(index0, item0) -> (parseTextSet) item0 <?> Index index0) (zip [0..] items0)) objectValue "sequence"
+    <*> explicitParseField (\value0 -> do items0 <- (parseJSON value0 :: Parser (Map Text Value)); Map.traverseWithKey (\key0 item0 -> (parseTextSet) item0 <?> Key (Key.fromText key0)) items0) objectValue "labelled"
+
+encodeMaybeTextLabelsMapped :: MaybeTextLabels -> Value
+encodeMaybeTextLabelsMapped = encodeMaybeTextLabelsShape . bindingToShape Bindings.maybeTextLabelsBinding
+
+parseMaybeTextLabelsMapped :: Value -> Parser MaybeTextLabels
+parseMaybeTextLabelsMapped value = bindingFromShape Bindings.maybeTextLabelsBinding <$> parseMaybeTextLabelsShape value
+
+decodeMaybeTextLabelsMapped :: Value -> Either Text MaybeTextLabels
+decodeMaybeTextLabelsMapped = mapLeftText . parseEither parseMaybeTextLabelsMapped
+
+encodeMaybeTextLabelsShape :: ShapeMaybeTextLabels.MaybeTextLabelsShape -> Value
+encodeMaybeTextLabelsShape value = maybe Null (\item0 -> encodeTextSet (item0)) (value)
+
+parseMaybeTextLabelsShape :: Value -> Parser ShapeMaybeTextLabels.MaybeTextLabelsShape
+parseMaybeTextLabelsShape = \value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTextSet) other0
+
+encodeTextLabelsMapped :: TextLabels -> Value
+encodeTextLabelsMapped = encodeTextLabelsShape . bindingToShape Bindings.textLabelsBinding
+
+parseTextLabelsMapped :: Value -> Parser TextLabels
+parseTextLabelsMapped value = bindingFromShape Bindings.textLabelsBinding <$> parseTextLabelsShape value
+
+decodeTextLabelsMapped :: Value -> Either Text TextLabels
+decodeTextLabelsMapped = mapLeftText . parseEither parseTextLabelsMapped
+
+encodeTextLabelsShape :: ShapeTextLabels.TextLabelsShape -> Value
+encodeTextLabelsShape value = encodeTextSet (value)
+
+parseTextLabelsShape :: Value -> Parser ShapeTextLabels.TextLabelsShape
+parseTextLabelsShape = parseTextSet
+
+labelStoreEventTypes :: NonEmpty EventType
+labelStoreEventTypes = EventType "LabelsStored" :| [EventType "LabelsAudited", EventType "LegacyLabelsImported"]
+
+labelStoreCodec :: Codec LabelStoreEvent
+labelStoreCodec =
+  Codec
+    { eventTypes = labelStoreEventTypes
+    , eventType = \case
+        LabelsStored{} -> EventType "LabelsStored"
+        LabelsAudited{} -> EventType "LabelsAudited"
+        LegacyLabelsImported{} -> EventType "LegacyLabelsImported"
+    , schemaVersion = 1
+    , encode = encodeLabelStoreEvent
+    , decode = parseLabelStoreEvent
+    , upcasters = []
+    }
+
+encodeLabelStoreEvent :: LabelStoreEvent -> Value
+encodeLabelStoreEvent = \case
+  LabelsStored payload ->
+    object
+      [ "kind" .= ("LabelsStored" :: Text)
+      , "labels" .= encodeTextLabelsMapped payload.labels
+      , "optionalLabels" .= encodeMaybeTextLabelsMapped payload.optionalLabels
+      , "envelope" .= encodeLabelEnvelopeMapped payload.envelope
+      ]
+  LabelsAudited payload ->
+    object
+      [ "kind" .= ("LabelsAudited" :: Text)
+      , "labels" .= encodeTextLabelsMapped payload.labels
+      , "optionalLabels" .= encodeMaybeTextLabelsMapped payload.optionalLabels
+      , "envelope" .= encodeLabelEnvelopeMapped payload.envelope
+      ]
+  LegacyLabelsImported payload ->
+    object
+      [ "kind" .= ("LegacyLabelsImported" :: Text)
+      , "labels" .= encodeTextLabelsMapped payload.labels
+      , "optionalLabels" .= encodeMaybeTextLabelsMapped payload.optionalLabels
+      , "envelope" .= encodeLabelEnvelopeMapped payload.envelope
+      ]
+
+parseLabelStoreEvent :: EventType -> Value -> Either Text LabelStoreEvent
+parseLabelStoreEvent (EventType tag) = mapLeftText . parseEither (withObject "LabelStoreEvent" go)
+  where
+    go o = do
+      case tag of
+        "LabelsStored" ->
+          LabelsStored
+            <$> ( LabelsStoredData
+                    <$> explicitParseField parseTextLabelsMapped o "labels"
+                    <*> parseOptionalField (parseMaybeTextLabelsMapped Null) parseMaybeTextLabelsMapped o "optionalLabels"
+                    <*> explicitParseField parseLabelEnvelopeMapped o "envelope"
+                )
+        "LabelsAudited" ->
+          LabelsAudited
+            <$> ( LabelsAuditedData
+                    <$> explicitParseField parseTextLabelsMapped o "labels"
+                    <*> parseOptionalField (parseMaybeTextLabelsMapped Null) parseMaybeTextLabelsMapped o "optionalLabels"
+                    <*> explicitParseField parseLabelEnvelopeMapped o "envelope"
+                )
+        "LegacyLabelsImported" ->
+          LegacyLabelsImported
+            <$> ( LegacyLabelsImportedData
+                    <$> explicitParseField parseTextLabelsMapped o "labels"
+                    <*> parseOptionalField (parseMaybeTextLabelsMapped Null) parseMaybeTextLabelsMapped o "optionalLabels"
+                    <*> explicitParseField parseLabelEnvelopeMapped o "envelope"
+                )
+        _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes labelStoreEventTypes)
+
+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
+
+parseOptionalField :: Parser fieldValue -> (Value -> Parser fieldValue) -> KeyMap.KeyMap Value -> Key.Key -> Parser fieldValue
+parseOptionalField onMissing parseItem objectValue key =
+  case KeyMap.lookup key objectValue of
+    Nothing -> onMissing
+    Just _ -> explicitParseField parseItem objectValue key
+
+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-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE TemplateHaskell #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.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.StructuralTextSets.Bindings qualified as Bindings
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels, TextLabels)
+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
+
+data LabelStoreVertex = LabelStoreEmpty | LabelStoreStored
+  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
+  deriving anyclass (ToJSON, FromJSON)
+instance CanonicalStateShape LabelStoreVertex
+instance CanonicalTypeName LabelStoreVertex
+
+data StoreLabelsData = StoreLabelsData
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data ImportLegacyLabelsData = ImportLegacyLabelsData
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LabelStoreCommand = StoreLabels !StoreLabelsData
+  | ImportLegacyLabels !ImportLegacyLabelsData
+  deriving stock (Generic, Eq, Show)
+
+data LabelsStoredData = LabelsStoredData
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LabelsAuditedData = LabelsAuditedData
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LegacyLabelsImportedData = LegacyLabelsImportedData
+  { labels :: !TextLabels
+  , optionalLabels :: !MaybeTextLabels
+  , envelope :: !LabelEnvelope
+  }
+  deriving stock (Generic, Eq, Show)
+
+data LabelStoreEvent = LabelsStored !LabelsStoredData
+  | LabelsAudited !LabelsAuditedData
+  | LegacyLabelsImported !LegacyLabelsImportedData
+  deriving stock (Generic, Eq, Show)
+
+type LabelStoreRegs =
+  '[ '("current", TextLabels)
+   ]
+
+initialLabelStoreRegs :: RegFile LabelStoreRegs
+initialLabelStoreRegs =
+  RCons (Proxy @"current") Bindings.initialTextLabels RNil
+
+$(deriveAggregateCtorsAll ''LabelStoreCommand ''LabelStoreRegs)
+
+
+
+$(deriveWireCtorsAll ''LabelStoreEvent)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs
@@ -0,0 +1,63 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.EventStream
+  ( labelStoreCategory
+  , labelStoreCommandCategory
+  , labelStoreEventStream
+  , labelStoreEventStreamDef
+  , LabelStoreEventStream
+  , LabelStoreEventStreamDef
+  , labelStoreSnapshotFixture
+  ) where
+
+import Generated.StructuralTextSets.LabelStore.Domain
+import Generated.StructuralTextSets.LabelStore.Codec (labelStoreCodec)
+import Generated.StructuralTextSets.LabelStore.Transducer (labelStoreFoldFingerprint, labelStoreTransducer)
+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.
+labelStoreCategory :: Stream.StreamCategory LabelStoreEventStreamDef
+labelStoreCategory = Stream.categoryUnsafe "labelStore"
+
+-- The same category text, typed for command envelopes such as PMCommand.
+labelStoreCommandCategory :: Stream.StreamCategory LabelStoreCommand
+labelStoreCommandCategory = Stream.categoryUnsafe "labelStore"
+
+type LabelStoreEventStreamDef =
+  EventStream (HsPred LabelStoreRegs LabelStoreCommand) LabelStoreRegs LabelStoreVertex LabelStoreCommand LabelStoreEvent
+
+type LabelStoreEventStream =
+  ValidatedEventStream (HsPred LabelStoreRegs LabelStoreCommand) LabelStoreRegs LabelStoreVertex LabelStoreCommand LabelStoreEvent
+
+labelStoreEventStreamDef :: LabelStoreEventStreamDef
+labelStoreEventStreamDef =
+  EventStream
+    { transducer = labelStoreTransducer,
+      initialState = LabelStoreEmpty,
+      initialRegisters = initialLabelStoreRegs,
+      eventCodec = labelStoreCodec,
+      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 labelStoreFoldFingerprint (defaultStateCodec 1))
+    }
+
+labelStoreSnapshotFixture :: (Int, Text)
+labelStoreSnapshotFixture = (1, "structural-text-sets-v1")
+
+labelStoreEventStream :: LabelStoreEventStream
+labelStoreEventStream =
+  mkEventStreamOrThrow "LabelStore" labelStoreEventStreamDef
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE OverloadedLabels #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.Harness (harnessAssertions) where
+
+import Generated.StructuralTextSets.LabelStore.Domain
+import Generated.StructuralTextSets.LabelStore.Codec (encodeLabelStoreEvent, parseLabelStoreEvent, labelStoreCodec, encodeLabelEnvelopeMapped, decodeLabelEnvelopeMapped)
+import Generated.StructuralTextSets.LabelStore.Transducer (labelStoreTransducer)
+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, (!))
+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, isRight)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Text qualified as T
+import Keiro.Codec.Structural (FixtureCases (..))
+import Conformance.StructuralTextSets.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 labelStoreTransducer))
+  -- clock-free: spec samples no wall clock (verified at scaffold time)
+  , ("golden round-trip: LabelsStored", roundTrips sampleEventLabelsStored)
+  , ("golden round-trip: LabelsAudited", roundTrips sampleEventLabelsAudited)
+  , ("golden round-trip: LegacyLabelsImported", roundTrips sampleEventLegacyLabelsImported)
+  , ("accepts StoreLabels from LabelStoreEmpty", acceptStoreLabels)
+  ]
+  ++ mappedConformanceAssertions
+  ++ forwardReplayStoreLabels
+
+roundTrips :: LabelStoreEvent -> Bool
+roundTrips e = parseLabelStoreEvent (eventType labelStoreCodec e) (encodeLabelStoreEvent e) == Right e
+
+sampleEventLabelsStored :: LabelStoreEvent
+sampleEventLabelsStored = LabelsStored (LabelsStoredData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))
+
+sampleEventLabelsAudited :: LabelStoreEvent
+sampleEventLabelsAudited = LabelsAudited (LabelsAuditedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))
+
+sampleEventLegacyLabelsImported :: LabelStoreEvent
+sampleEventLegacyLabelsImported = LegacyLabelsImported (LegacyLabelsImportedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))
+
+acceptStoreLabels :: Bool
+acceptStoreLabels =
+  case step labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) (StoreLabels (StoreLabelsData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))) of
+    Just (v, _, _) -> v == LabelStoreStored
+    Nothing -> False
+
+-- forward/replay equality (plan 147): cross the persisted codec boundary,
+-- replay the emitted chain, and compare the final vertex and every register.
+forwardReplayStoreLabels :: [(String, Bool)]
+forwardReplayStoreLabels =
+  case step labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) (StoreLabels (StoreLabelsData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))) of
+    Nothing -> [(prefix <> "forward step accepted", False)]
+    Just (forwardVertex, forwardRegs, emitted) ->
+      case mapM (\event -> parseLabelStoreEvent (eventType labelStoreCodec event) (encodeLabelStoreEvent event)) emitted of
+        Left _ -> [(prefix <> "emitted chain decodes", False)]
+        Right decodedEvents ->
+          case applyEventsEither labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) decodedEvents of
+            Left _ -> [(prefix <> "replay succeeds", False)]
+            Right (replayVertex, replayRegs) ->
+              [ (prefix <> "final vertex", replayVertex == forwardVertex)
+              , (prefix <> "register current", (replayRegs ! #current) == (forwardRegs ! #current))
+              ]
+  where
+    prefix = "forward/replay equality: StoreLabels from LabelStoreEmpty -- "
+
+mappedConformanceAssertions :: [(String, Bool)]
+mappedConformanceAssertions =
+  concat
+    [ labelsStoredLabelsAssertions
+    , labelsStoredOptionalLabelsAssertions
+    , labelsStoredEnvelopeAssertions
+    , labelsAuditedLabelsAssertions
+    , labelsAuditedOptionalLabelsAssertions
+    , labelsAuditedEnvelopeAssertions
+    , legacyLabelsImportedLabelsAssertions
+    , legacyLabelsImportedOptionalLabelsAssertions
+    , legacyLabelsImportedEnvelopeAssertions
+    , structuralWirePolicyAssertions
+    ]
+
+labelsStoredLabelsAssertions :: [(String, Bool)]
+labelsStoredLabelsAssertions =
+  [ ("mapped codec round-trip: LabelsStored/labels/" <> T.unpack label, roundTrips (LabelsStored (LabelsStoredData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.textLabelsFixtures)
+  ]
+
+labelsStoredOptionalLabelsAssertions :: [(String, Bool)]
+labelsStoredOptionalLabelsAssertions =
+  [ ("mapped codec round-trip: LabelsStored/optionalLabels/" <> T.unpack label, roundTrips (LabelsStored (LabelsStoredData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeTextLabelsFixtures)
+  ]
+
+labelsStoredEnvelopeAssertions :: [(String, Bool)]
+labelsStoredEnvelopeAssertions =
+  [ ("mapped codec round-trip: LabelsStored/envelope/" <> T.unpack label, roundTrips (LabelsStored (LabelsStoredData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.labelEnvelopeFixtures)
+  ]
+
+labelsAuditedLabelsAssertions :: [(String, Bool)]
+labelsAuditedLabelsAssertions =
+  [ ("mapped codec round-trip: LabelsAudited/labels/" <> T.unpack label, roundTrips (LabelsAudited (LabelsAuditedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.textLabelsFixtures)
+  ]
+
+labelsAuditedOptionalLabelsAssertions :: [(String, Bool)]
+labelsAuditedOptionalLabelsAssertions =
+  [ ("mapped codec round-trip: LabelsAudited/optionalLabels/" <> T.unpack label, roundTrips (LabelsAudited (LabelsAuditedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeTextLabelsFixtures)
+  ]
+
+labelsAuditedEnvelopeAssertions :: [(String, Bool)]
+labelsAuditedEnvelopeAssertions =
+  [ ("mapped codec round-trip: LabelsAudited/envelope/" <> T.unpack label, roundTrips (LabelsAudited (LabelsAuditedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.labelEnvelopeFixtures)
+  ]
+
+legacyLabelsImportedLabelsAssertions :: [(String, Bool)]
+legacyLabelsImportedLabelsAssertions =
+  [ ("mapped codec round-trip: LegacyLabelsImported/labels/" <> T.unpack label, roundTrips (LegacyLabelsImported (LegacyLabelsImportedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.textLabelsFixtures)
+  ]
+
+legacyLabelsImportedOptionalLabelsAssertions :: [(String, Bool)]
+legacyLabelsImportedOptionalLabelsAssertions =
+  [ ("mapped codec round-trip: LegacyLabelsImported/optionalLabels/" <> T.unpack label, roundTrips (LegacyLabelsImported (LegacyLabelsImportedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) mappedValue (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.maybeTextLabelsFixtures)
+  ]
+
+legacyLabelsImportedEnvelopeAssertions :: [(String, Bool)]
+legacyLabelsImportedEnvelopeAssertions =
+  [ ("mapped codec round-trip: LegacyLabelsImported/envelope/" <> T.unpack label, roundTrips (LegacyLabelsImported (LegacyLabelsImportedData (snd (NonEmpty.head (fixtureCases Bindings.textLabelsFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.maybeTextLabelsFixtures))) mappedValue)))
+  | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.labelEnvelopeFixtures)
+  ]
+
+structuralWirePolicyAssertions :: [(String, Bool)]
+structuralWirePolicyAssertions =
+  [ ("wire policy missing default: conformance.structural-text-sets.LabelEnvelope.v1/optionalLabels", case decodeLabelEnvelopeMapped (deleteObjectField "optionalLabels" (encodeLabelEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures))))) of Left _ -> False; Right decoded -> objectField "optionalLabels" (encodeLabelEnvelopeMapped decoded) == Just (Aeson.Null))
+  , ("wire policy explicit null: conformance.structural-text-sets.LabelEnvelope.v1/optionalLabels", isRight (decodeLabelEnvelopeMapped (insertObjectField "optionalLabels" Aeson.Null (encodeLabelEnvelopeMapped (snd (NonEmpty.head (fixtureCases Bindings.labelEnvelopeFixtures)))))))
+  , ("wire policy unknown fields: conformance.structural-text-sets.LabelEnvelope.v1", all (\(_, value) -> isLeft (decodeLabelEnvelopeMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeLabelEnvelopeMapped value)))) (NonEmpty.toList (fixtureCases Bindings.labelEnvelopeFixtures)))
+  ]
+
+deleteObjectField :: T.Text -> Aeson.Value -> Aeson.Value
+deleteObjectField key (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.delete (AesonKey.fromText key) objectValue)
+deleteObjectField _ value = value
+
+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
+
+objectField :: T.Text -> Aeson.Value -> Maybe Aeson.Value
+objectField key (Aeson.Object objectValue) = AesonKeyMap.lookup (AesonKey.fromText key) objectValue
+objectField _ _ = Nothing
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs
@@ -0,0 +1,4 @@
+-- @generated by keiro-dsl 0.18.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
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE BlockArguments #-}
+{-# LANGUAGE QualifiedDo #-}
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+module Generated.StructuralTextSets.LabelStore.Transducer
+  ( labelStoreTransducer
+  , labelStoreFoldFingerprint
+  , BehaviorOwnership (..)
+  , labelStorePredicateVerifications
+  ) where
+
+import Generated.StructuralTextSets.LabelStore.Domain
+import Data.Text (Text)
+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 ((=:))
+
+labelStoreTransducer
+  :: SymTransducer
+       (HsPred LabelStoreRegs LabelStoreCommand)
+       LabelStoreRegs
+       LabelStoreVertex
+       LabelStoreCommand
+       LabelStoreEvent
+labelStoreTransducer =
+  B.buildTransducer LabelStoreEmpty initialLabelStoreRegs isTerminal do
+    B.from LabelStoreEmpty do
+      B.onCmd inCtorStoreLabels $ \d -> B.do
+        B.slot @"current" =: d.labels
+        B.emit wireLabelsStored (LabelsStoredTermFields
+          { labels = d.labels
+          , optionalLabels = d.optionalLabels
+          , envelope = d.envelope
+          })
+        B.emit wireLabelsAudited (LabelsAuditedTermFields
+          { labels = d.labels
+          , optionalLabels = d.optionalLabels
+          , envelope = d.envelope
+          })
+        B.goto LabelStoreStored
+      B.onCmd inCtorImportLegacyLabels $ \d -> B.do
+        B.replayOnly
+        B.slot @"current" =: d.labels
+        B.emit wireLegacyLabelsImported (LegacyLabelsImportedTermFields
+          { labels = d.labels
+          , optionalLabels = d.optionalLabels
+          , envelope = d.envelope
+          })
+        B.goto LabelStoreStored
+ where
+  isTerminal = \case
+    LabelStoreStored -> True
+    _ -> False
+
+labelStoreFoldFingerprint :: Text
+labelStoreFoldFingerprint = "0c2bb8be00157f35ec32d45a77a0a98e"
+
+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.
+labelStorePredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]
+labelStorePredicateVerifications = sequence
+  [ verifyTransition "transition1EmptyStoreLabels" GeneratedOwned LabelStoreEmpty 0
+  , verifyTransition "transition2EmptyImportLegacyLabels" GeneratedOwned LabelStoreEmpty 1
+  ]
+ where
+  verifyTransition label owner source edgeIndex =
+    case drop edgeIndex (K.edgesOut labelStoreTransducer 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-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs
@@ -0,0 +1,80 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from projection-catalog structural-text-sets; do not edit.
+{-# LANGUAGE OverloadedStrings #-}
+module Generated.StructuralTextSets.ProjectionCatalog
+  ( projectionCatalog
+  , validatedProjectionCatalog
+  , projectionCatalogInventory
+  , projectionCatalogRegistrations
+  , projectionCatalogAsyncRegistrations
+  , projectionCatalogQuerySupplies
+  , registerProjectionCatalog
+  , labelWriterProjectionSet
+  , labelRebuildRebuildGroupId
+  , startLabelRebuildRebuild
+  ) where
+
+import Data.List.NonEmpty (NonEmpty (..))
+import Effectful (Eff, IOE, (:>))
+import Keiro.Projection (AsyncProjection (..))
+import Keiro.Projection.Catalog qualified as Catalog
+import Keiro.ReadModel.Rebuild qualified as Rebuild
+import Kiroku.Store.Effect (Store)
+import Kiroku.Store.Subscription.Types qualified as KirokuSubscription
+import StructuralTextSets.ProjectionCatalog.ProjectionCatalogHoles qualified as Holes
+import Generated.StructuralTextSets.LabelLookup.ReadModel qualified as RMLabelLookup
+
+must :: Show error => Either error value -> value
+must = either (error . show) id
+
+labelWriterProjectionSet :: Catalog.ProjectionSet Holes.LabelWriterEvent
+labelWriterProjectionSet =
+  Catalog.ProjectionSet
+    (must (Catalog.mkSourceId "all"))
+    (Catalog.ProjectionDefinition
+      (must (Catalog.mkProjectionId "label_writer"))
+      (must (Catalog.mkRebuildGroupId "label_rebuild"))
+      ((must (Catalog.mkTargetId "label_table")) :| [])
+      (Catalog.Replayable (Catalog.ReplayAdapter Holes.decodeLabelWriterReplay Holes.applyLabelWriterReplay))
+      (Catalog.AsyncHandler (AsyncProjection "label-writer-v1" "structural-text-sets-label-lookup" "label-writer" Holes.applyLabelWriterLive Holes.labelWriterIdempotencyKey) (must (Catalog.mkSubscriptionId "label-writer")) (must (Catalog.mkDedupKeyId "label-writer-v1")) (must (Catalog.mkClaimSite "projection-owner label_writer async-handler")) :| [])
+      (must (Catalog.mkClaimSite "projection-owner label_writer"))
+      :| [])
+    (must (Catalog.mkClaimSite "projection-owner label_writer source"))
+
+projectionCatalog :: Catalog.ProjectionCatalog
+projectionCatalog =
+  Catalog.ProjectionCatalog
+    [Catalog.SourceDeclaration (must (Catalog.mkSourceId "all")) Catalog.AllStreams "all-streams/generated-codec/v1" (must (Catalog.mkClaimSite "source all"))]
+    [Catalog.TargetDeclaration (must (Catalog.mkTargetId "label_table")) (Catalog.QualifiedTable "public" "label_values") Catalog.ClearBeforeReplay [] (must (Catalog.mkClaimSite "target label_table"))]
+    [Catalog.RebuildGroupDeclaration (must (Catalog.mkRebuildGroupId "label_rebuild")) [(must (Catalog.mkTargetId "label_table"))] [] (must (Catalog.mkClaimSite "rebuild-group label_rebuild"))]
+    []
+    []
+    [Catalog.SubscriptionDeclaration (must (Catalog.mkSubscriptionId "label-writer")) "label-writer" (must (Catalog.mkSourceId "all")) KirokuSubscription.FromBeginning (must (Catalog.mkClaimSite "projection-owner label_writer subscription"))]
+    [Catalog.DedupKeyDeclaration (must (Catalog.mkDedupKeyId "label-writer-v1")) "label-writer-v1" (must (Catalog.mkClaimSite "projection-owner label_writer dedup"))]
+    [Catalog.SomeQueryModelBinding (Catalog.QueryModelBinding (must (Catalog.mkQueryModelId "label_lookup")) RMLabelLookup.labelLookupReadModel (must (Catalog.mkRebuildGroupId "label_rebuild")) [(must (Catalog.mkTargetId "label_table"))] (must (Catalog.mkClaimSite "readmodel label_lookup")))]
+    [Catalog.SomeProjectionSet labelWriterProjectionSet]
+
+validatedProjectionCatalog :: Catalog.ValidatedProjectionCatalog
+validatedProjectionCatalog = case Catalog.validateProjectionCatalog projectionCatalog of
+  Catalog.Success catalog -> catalog
+  Catalog.Failure diagnostics -> error ("keiro-dsl generated an invalid projection catalog: " <> show diagnostics)
+
+projectionCatalogInventory :: Catalog.CatalogInventory
+projectionCatalogInventory = Catalog.catalogInventory validatedProjectionCatalog
+
+projectionCatalogRegistrations :: [Catalog.CatalogRegistration]
+projectionCatalogRegistrations = Catalog.catalogRegistrations validatedProjectionCatalog
+
+projectionCatalogAsyncRegistrations :: [Catalog.AsyncProjectionRegistration]
+projectionCatalogAsyncRegistrations = Catalog.asyncProjectionRegistrations validatedProjectionCatalog
+
+projectionCatalogQuerySupplies :: [Catalog.ResolvedQuerySupply]
+projectionCatalogQuerySupplies = Catalog.resolvedQuerySupplies validatedProjectionCatalog
+
+registerProjectionCatalog :: (Store :> es) => Eff es (Either Rebuild.CatalogRegistrationError [Rebuild.GroupRebuildMetadata])
+registerProjectionCatalog = Rebuild.registerProjectionCatalog validatedProjectionCatalog
+
+labelRebuildRebuildGroupId :: Catalog.RebuildGroupId
+labelRebuildRebuildGroupId = (must (Catalog.mkRebuildGroupId "label_rebuild"))
+
+startLabelRebuildRebuild :: (IOE :> es, Store :> es) => Rebuild.RebuildOptions -> Eff es (Either Rebuild.CatalogRebuildError Rebuild.RebuildRunReport)
+startLabelRebuildRebuild = Rebuild.startCatalogRebuild validatedProjectionCatalog labelRebuildRebuildGroupId
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs
@@ -0,0 +1,23 @@
+-- @generated by keiro-dsl 0.18.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;
+--   * 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.StructuralTextSets.ReplayAudit (auditTargets) where
+
+import Generated.StructuralTextSets.LabelStore.EventStream qualified as LabelStore
+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)
+import Keiro.Stream qualified as Stream
+
+auditTargets :: [SomeAuditTarget]
+auditTargets =
+  [ SomeAuditTarget
+      AuditTarget
+        { eventStream = LabelStore.labelStoreEventStream
+        , category = Stream.categoryText LabelStore.labelStoreCategory
+        , mkStream = streamInCategory (Stream.categoryText LabelStore.labelStoreCategory)
+        }
+  ]
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs
@@ -0,0 +1,17 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Set (Set)
+import Data.Text (Text)
+import GHC.Generics (Generic)
+import Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels qualified as MaybeTextLabels
+
+data LabelEnvelopeShape = LabelEnvelope
+  { primary :: !(Set Text)
+  , optionalLabels :: !(Maybe (Set Text))
+  , namedOptional :: !MaybeTextLabels.MaybeTextLabelsShape
+  , sequence :: ![Set Text]
+  , labelled :: !(Map Text (Set Text))
+  }
+  deriving stock (Eq, Generic, Show)
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs
@@ -0,0 +1,7 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+
+type MaybeTextLabelsShape = (Maybe (Set Text))
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
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs
@@ -0,0 +1,7 @@
+-- @generated by keiro-dsl 0.18.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)
+import Data.Text (Text)
+
+type TextLabelsShape = (Set Text)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs
@@ -0,0 +1,84 @@
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context structural-text-sets structural conformance; do not edit.
+module Generated.StructuralTextSets.StructuralConformance
+  ( structuralConformanceAssertions
+  ) where
+
+import Data.List (nub)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Maybe (isJust, isNothing)
+import Data.Proxy (Proxy (..))
+import Data.Text qualified as T
+import Keiki.Shape (CanonicalTypeName (..))
+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
+import Generated.StructuralTextSets.Structural.Shape.LabelEnvelope (LabelEnvelopeShape(optionalLabels))
+import Conformance.StructuralTextSets.Bindings qualified as Bindings
+import Conformance.StructuralTextSets.Domain (LabelEnvelope, MaybeTextLabels, TextLabels)
+
+structuralConformanceAssertions :: [(String, Bool)]
+structuralConformanceAssertions =
+  concat
+    [ labelEnvelopeBindingAssertions
+    , maybeTextLabelsBindingAssertions
+    , textLabelsBindingAssertions
+    , [("fixture coverage: conformance.structural-text-sets.LabelEnvelope.v1", coverageLabelEnvelope)]
+    , [("fixture coverage: conformance.structural-text-sets.MaybeTextLabels.v1", coverageMaybeTextLabels)]
+    , [("fixture coverage: conformance.structural-text-sets.TextLabels.v1", coverageTextLabels)]
+    ]
+
+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)
+
+labelEnvelopeBindingAssertions :: [(String, Bool)]
+labelEnvelopeBindingAssertions =
+  ("fixture labels: conformance.structural-text-sets.LabelEnvelope.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.structural-text-sets.LabelEnvelope.v1", canonicalTypeName (Proxy @LabelEnvelope) == "conformance.structural-text-sets.LabelEnvelope.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.structural-text-sets.LabelEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.labelEnvelopeBinding value)
+      , ("binding shape round-trip: conformance.structural-text-sets.LabelEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.labelEnvelopeBinding (bindingToShape Bindings.labelEnvelopeBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.labelEnvelopeFixtures
+
+maybeTextLabelsBindingAssertions :: [(String, Bool)]
+maybeTextLabelsBindingAssertions =
+  ("fixture labels: conformance.structural-text-sets.MaybeTextLabels.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.structural-text-sets.MaybeTextLabels.v1", canonicalTypeName (Proxy @MaybeTextLabels) == "conformance.structural-text-sets.MaybeTextLabels.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.structural-text-sets.MaybeTextLabels.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeTextLabelsBinding value)
+      , ("binding shape round-trip: conformance.structural-text-sets.MaybeTextLabels.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeTextLabelsBinding (bindingToShape Bindings.maybeTextLabelsBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.maybeTextLabelsFixtures
+
+textLabelsBindingAssertions :: [(String, Bool)]
+textLabelsBindingAssertions =
+  ("fixture labels: conformance.structural-text-sets.TextLabels.v1", validFixtureLabels cases) :
+  ("canonical identity: conformance.structural-text-sets.TextLabels.v1", canonicalTypeName (Proxy @TextLabels) == "conformance.structural-text-sets.TextLabels.v1") :
+  concat
+    [ [ ("binding domain round-trip: conformance.structural-text-sets.TextLabels.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textLabelsBinding value)
+      , ("binding shape round-trip: conformance.structural-text-sets.TextLabels.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textLabelsBinding (bindingToShape Bindings.textLabelsBinding value))
+      ]
+    | (label, value) <- NonEmpty.toList cases
+    ]
+  where
+    cases = fixtureCases Bindings.textLabelsFixtures
+
+coverageLabelEnvelope :: Bool
+coverageLabelEnvelope = any (isNothing . (.optionalLabels)) shapes && any (isJust . (.optionalLabels)) shapes
+  where
+    shapes = map (bindingToShape Bindings.labelEnvelopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.labelEnvelopeFixtures))
+
+coverageMaybeTextLabels :: Bool
+coverageMaybeTextLabels = any isNothing shapes && any isJust shapes
+  where
+    shapes = map (bindingToShape Bindings.maybeTextLabelsBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeTextLabelsFixtures))
+
+coverageTextLabels :: Bool
+coverageTextLabels = True
diff --git a/test/conformance-structural-text-sets/Main.hs b/test/conformance-structural-text-sets/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/Main.hs
@@ -0,0 +1,254 @@
+module Main (main) where
+
+import Conformance.StructuralTextSets.Bindings (textLabelsFixtures)
+import Conformance.StructuralTextSets.Domain
+import Conformance.StructuralTextSets.Historical (historicalTextLabelsCodec)
+import Control.Monad (forM_, unless)
+import Data.Aeson (Value (..), parseJSON)
+import Data.Aeson qualified as Aeson
+import Data.Aeson.Key qualified as Key
+import Data.Aeson.KeyMap qualified as KeyMap
+import Data.Aeson.Types (parseEither)
+import Data.Either (isLeft)
+import Data.List.NonEmpty qualified as NonEmpty
+import Data.Map.Strict qualified as Map
+import Data.Set qualified as Set
+import Data.Text (Text)
+import Data.Text qualified as T
+import Generated.StructuralTextSets.LabelJobs.Queue (LabelJob (..), encodeLabelJob, parseLabelJob)
+import Generated.StructuralTextSets.LabelLookup.QueryContract (LabelLookupQueryInput, LabelLookupQueryResult)
+import Generated.StructuralTextSets.LabelStore.Codec
+import Generated.StructuralTextSets.LabelStore.Domain
+import Generated.StructuralTextSets.LabelStore.Harness (harnessAssertions)
+import Generated.StructuralTextSets.LabelStore.Transducer (labelStoreTransducer)
+import Generated.StructuralTextSets.StructuralConformance (structuralConformanceAssertions)
+import Keiki.Core (applyEventsEither, (!))
+import Keiro.Codec (EventType (..), eventType)
+import Keiro.Codec.Structural qualified
+import Keiro.Dsl.CodecCompare (CompareObservation (..), DecodeOutcome (..), FixtureVerdict (..), HistoricalCodec (..), classifyObservation)
+import Keiro.Test.ReplayCompatibility (NormalizationFailure (..), checkNormalizationLaw)
+import System.Exit (exitFailure)
+
+main :: IO ()
+main = do
+  let assertions =
+        [("structural/" <> label, passed) | (label, passed) <- structuralConformanceAssertions]
+          <> harnessAssertions
+          <> [ ("bare Set Text writes sorted unique arrays", canonicalTextLabelsWire),
+               ("duplicate and permuted arrays normalize before binding", nonCanonicalInputsNormalize),
+               ("normalization preserves actual transducer replay state", normalizationReplayLaw),
+               ("replay-only history normalizes before reaching the transducer", replayOnlyNormalization),
+               ("a first event that loses set information is rejected", headInformationLossRejected),
+               ("a list-valued live mutation fails the replay law", listMutationRejected),
+               ("a strict duplicate reader requires versioned compatibility work", strictDuplicateReaderRejected),
+               ("historical Aeson Set writer and reader remain compatible", historicalCodecParity),
+               ("invalid set elements fail at their array position", invalidElementRejected),
+               ("root optional set fields treat omission and null alike", rootOptionalAbsenceEquivalence),
+               ("non-optional set fields still reject omission", nonOptionalRootStrict),
+               ("nested list and map sets round-trip", nestedRoundTrip),
+               ("queue payloads preserve structural text sets", queueRoundTrip),
+               ("query contracts preserve structural text-set domain types", queryAgreement),
+               ("application-owned workflow codecs normalize through the same set domain", workflowCodecRoundTrip)
+             ]
+  forM_ assertions $ \(label, passed) ->
+    putStrLn ((if passed then "PASS  " else "FAIL  ") <> label)
+  unless (all snd assertions) exitFailure
+
+canonicalTextLabelsWire :: Bool
+canonicalTextLabelsWire =
+  encodeTextLabelsMapped value == Aeson.toJSON (["A", "a", "a\x0308", "ä", "\xE000", "\x10000"] :: [Text])
+  where
+    value = TextLabels (Set.fromList ["\x10000", "\xE000", "ä", "a\x0308", "a", "A"])
+
+nonCanonicalInputsNormalize :: Bool
+nonCanonicalInputsNormalize =
+  decodeTextLabelsMapped nonCanonical == Right expected
+    && decodeTextLabelsMapped canonical == Right expected
+    && fmap encodeTextLabelsMapped (decodeTextLabelsMapped nonCanonical) == Right canonical
+  where
+    nonCanonical = Aeson.toJSON (["b", "a", "a"] :: [Text])
+    canonical = Aeson.toJSON (["a", "b"] :: [Text])
+    expected = TextLabels (Set.fromList ["a", "b"])
+
+normalizationReplayLaw :: Bool
+normalizationReplayLaw =
+  null
+    ( checkNormalizationLaw
+        decodeTextLabelsMapped
+        encodeTextLabelsMapped
+        replayRawSetChain
+        []
+        (Aeson.toJSON (["b", "a", "a"] :: [Text]))
+        (Aeson.toJSON (["a", "b"] :: [Text]))
+        []
+    )
+
+-- The replay function receives the raw set array, inserts it into both events
+-- of the generated transition, crosses the generated event parser, and then
+-- applies the real generated transducer. Its observation includes control state
+-- and the durable register, not merely the decoded set.
+replayRawSetChain :: [Value] -> Either Text (LabelStoreVertex, TextLabels)
+replayRawSetChain wires = do
+  events <- concat <$> traverse rawTransition wires
+  (vertex, registers) <- firstText (applyEventsEither labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) events)
+  pure (vertex, registers ! #current)
+  where
+    rawTransition wire = do
+      let labels = TextLabels Set.empty
+          optional = MaybeTextLabels Nothing
+          envelope = sampleEnvelope
+          stored = LabelsStored (LabelsStoredData labels optional envelope)
+          audited = LabelsAudited (LabelsAuditedData labels optional envelope)
+      storedEvent <- parseLabelStoreEvent (EventType "LabelsStored") (replaceObjectField "labels" wire (encodeLabelStoreEvent stored))
+      auditedEvent <- parseLabelStoreEvent (EventType "LabelsAudited") (replaceObjectField "labels" wire (encodeLabelStoreEvent audited))
+      pure [storedEvent, auditedEvent]
+
+replayOnlyNormalization :: Bool
+replayOnlyNormalization =
+  case parseLabelStoreEvent (EventType "LegacyLabelsImported") rawEvent of
+    Left _ -> False
+    Right parsedEvent ->
+      case applyEventsEither labelStoreTransducer (LabelStoreEmpty, initialLabelStoreRegs) [parsedEvent] of
+        Left _ -> False
+        Right (vertex, registers) ->
+          vertex == LabelStoreStored
+            && registers ! #current == TextLabels (Set.fromList ["a", "b"])
+  where
+    emptyLabels = TextLabels Set.empty
+    sampleEvent = LegacyLabelsImported (LegacyLabelsImportedData emptyLabels (MaybeTextLabels Nothing) sampleEnvelope)
+    rawEvent = replaceObjectField "labels" (Aeson.toJSON (["b", "a", "a"] :: [Text])) (encodeLabelStoreEvent sampleEvent)
+
+headInformationLossRejected :: Bool
+headInformationLossRejected =
+  isLeft (parseLabelStoreEvent (EventType "LabelsStored") (deleteObjectField "labels" (encodeLabelStoreEvent event)))
+  where
+    event = LabelsStored (LabelsStoredData (TextLabels (Set.fromList ["a", "b"])) (MaybeTextLabels Nothing) sampleEnvelope)
+
+listMutationRejected :: Bool
+listMutationRejected =
+  let failures =
+        checkNormalizationLaw
+          decodeTextList
+          encodeDeduplicatedList
+          replayTextList
+          []
+          (Aeson.toJSON (["b", "a", "a"] :: [Text]))
+          (Aeson.toJSON (["a", "b"] :: [Text]))
+          []
+   in DomainRoundTripFailed `elem` failures
+        && NormalizedReplayDiverged `elem` failures
+  where
+    decodeTextList :: Value -> Either Text [Text]
+    decodeTextList = firstText . parseEither parseJSON
+    encodeDeduplicatedList :: [Text] -> Value
+    encodeDeduplicatedList = Aeson.toJSON . Set.toAscList . Set.fromList
+    replayTextList :: [Value] -> Either Text [Text]
+    replayTextList values = case traverse decodeTextList values of
+      Left problem -> Left problem
+      Right [] -> Left "empty mutation trace"
+      Right decoded -> Right (last decoded)
+
+strictDuplicateReaderRejected :: Bool
+strictDuplicateReaderRejected =
+  case
+      classifyObservation
+        ( DecodeObservation
+            "duplicate-text-set.json"
+            (Aeson.toJSON (["b", "a", "a"] :: [Text]))
+            (DecodedShape (Aeson.toJSON (["a", "b"] :: [Text])))
+            (DecodeFailed "candidate reader rejected a duplicate accepted by v1")
+        )
+    of
+    Right (RequiresVersionWork _) -> True
+    _ -> False
+
+historicalCodecParity :: Bool
+historicalCodecParity =
+  all
+    ( \(label, value) ->
+        classifyObservation (EncodeObservation label (historicalTextLabelsCodec.encode value) (encodeTextLabelsMapped value)) == Right JsonParity
+    )
+    (NonEmpty.toList (Keiro.Codec.Structural.fixtureCases textLabelsFixtures))
+    && historicalTextLabelsCodec.decode (Aeson.toJSON (["b", "a", "a"] :: [Text]))
+      == Right (TextLabels (Set.fromList ["a", "b"]))
+
+invalidElementRejected :: Bool
+invalidElementRejected =
+  case decodeTextLabelsMapped (Aeson.toJSON ([String "a", Number 1] :: [Value])) of
+    Left problem -> "[1]" `T.isInfixOf` problem
+    Right _ -> False
+
+-- | Plan 295 found both spellings of absence in retained history -- omitted keys
+-- and explicit nulls -- which historical Aeson decoding had always read as
+-- 'Nothing'. A root 'Optional' mapped set field must therefore accept an omitted
+-- key and decode it exactly as an explicit null.
+rootOptionalAbsenceEquivalence :: Bool
+rootOptionalAbsenceEquivalence =
+  parseLabelStoreEvent kind (deleteObjectField "optionalLabels" encoded) == Right event
+    && parseLabelStoreEvent kind (replaceObjectField "optionalLabels" Null encoded) == Right event
+  where
+    event = LabelsStored (LabelsStoredData labels (MaybeTextLabels Nothing) sampleEnvelope)
+    kind = eventType labelStoreCodec event
+    encoded = encodeLabelStoreEvent event
+    labels = TextLabels (Set.fromList ["a", "b"])
+
+-- | The equivalence above is scoped to root 'Optional' mapped fields. A
+-- non-optional mapped root carries no absent spelling, so omitting it stays a
+-- decode failure rather than defaulting.
+nonOptionalRootStrict :: Bool
+nonOptionalRootStrict =
+  isLeft (parseLabelStoreEvent kind (deleteObjectField "labels" encoded))
+    && isLeft (parseLabelStoreEvent kind (deleteObjectField "envelope" encoded))
+  where
+    event = LabelsStored (LabelsStoredData labels (MaybeTextLabels Nothing) sampleEnvelope)
+    kind = eventType labelStoreCodec event
+    encoded = encodeLabelStoreEvent event
+    labels = TextLabels (Set.fromList ["a", "b"])
+
+nestedRoundTrip :: Bool
+nestedRoundTrip = decodeLabelEnvelopeMapped (encodeLabelEnvelopeMapped sampleEnvelope) == Right sampleEnvelope
+
+queueRoundTrip :: Bool
+queueRoundTrip = parseLabelJob (encodeLabelJob payload) == Right payload
+  where
+    payload = LabelJob (TextLabels (Set.fromList ["a", "b"])) (MaybeTextLabels Nothing) sampleEnvelope
+
+queryAgreement :: Bool
+queryAgreement =
+  queryInputIdentity (MaybeTextLabels (Just (Set.fromList ["a", "b"]))) == MaybeTextLabels (Just (Set.fromList ["a", "b"]))
+    && queryResultIdentity sampleEnvelope == sampleEnvelope
+
+queryInputIdentity :: LabelLookupQueryInput -> MaybeTextLabels
+queryInputIdentity = id
+
+queryResultIdentity :: LabelLookupQueryResult -> LabelEnvelope
+queryResultIdentity = id
+
+-- Workflows remain application-owned. This explicit example demonstrates the
+-- required codec property without implying that the DSL owns workflow journals.
+workflowCodecRoundTrip :: Bool
+workflowCodecRoundTrip =
+  parseEither parseJSON (Aeson.toJSON value) == Right value
+    && parseEither parseJSON (Aeson.toJSON (["b", "a", "a"] :: [Text])) == Right value
+  where
+    value = TextLabels (Set.fromList ["a", "b"])
+
+sampleEnvelope :: LabelEnvelope
+sampleEnvelope =
+  LabelEnvelope
+    (Set.fromList ["b", "a"])
+    (Just (Set.fromList ["z", "y"]))
+    (MaybeTextLabels (Just (Set.fromList ["named", "optional"])))
+    [Set.fromList ["second", "first"], Set.empty]
+    (Map.fromList [("unicode", Set.fromList ["\x10000", "\xE000", "a\x0308", "ä"])])
+
+firstText :: (Show problem) => Either problem value -> Either Text value
+firstText = either (Left . T.pack . show) Right
+
+deleteObjectField :: Key.Key -> Value -> Value
+deleteObjectField key (Object value) = Object (KeyMap.delete key value)
+deleteObjectField _ value = value
+
+replaceObjectField :: Key.Key -> Value -> Value -> Value
+replaceObjectField key inserted (Object value) = Object (KeyMap.insert key inserted value)
+replaceObjectField _ _ value = value
diff --git a/test/conformance-structural-text-sets/README.md b/test/conformance-structural-text-sets/README.md
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/README.md
@@ -0,0 +1,41 @@
+# Structural text-set conformance
+
+This is the compiled public-authoring example for checked `Set Text` mappings.
+It uses a set directly in a named bare mapping and inside a structural record,
+`Optional`, `List`, and text-keyed `Map`; the same mapped domain values cross
+aggregate command/event/register, workqueue, read-model query, snapshot, event
+serialization, and strict multi-event replay surfaces.
+
+The smallest consumer contract is a total `StructuralBinding` between each
+domain type and its generated shape. Set parsing and canonical JSON ownership
+stay in `Keiro.Codec.TextSet`; bindings never convert through lists or retain
+input order or multiplicity. The v1 writer emits ascending unique arrays in
+lexicographic Unicode code-point order. The reader accepts permutations and
+duplicates and constructs the set before binding or execution. It performs no
+Unicode normalization or case folding.
+
+| Surface | Structural text-set status |
+| --- | --- |
+| Bare and nested structural mappings | Supported and compiled here |
+| Aggregate commands, private events, and registers | Supported through named mappings and strict replay evidence here |
+| Workqueue payloads | Supported through named mappings and round-trip evidence here |
+| Read-model query input/result types | Supported through named mappings and compiled aliases here |
+| Cross-file workspace ownership | Supported by the common mapped-type ownership path; the workspace structural suite proves that path |
+| Public contract fields | Application-owned codec boundary; no structural mapping syntax is implied |
+| Process/workflow journals and effects | Application-owned codecs; sharing `Set Text` does not transfer journal ownership |
+| Direct aggregate `Set Text` fields | Unsupported with a located diagnostic; use a named structural mapping |
+| Nominal set wrappers | Unsupported in this release |
+| Membership, size, ordering, insertion, and removal expressions | Unsupported in this release |
+
+The suite supplies `['b','a','a']` and `['a','b']` to the shared normalization
+law. Its replay callback inserts the raw arrays into both events emitted by the
+generated transition, parses those stored event values, runs the real generated
+transducer, and compares the final vertex and durable register. A mutant that
+keeps a list during live execution and deduplicates only while encoding fails
+both the domain and replay clauses. A duplicate-rejecting candidate is classified
+as versioned compatibility work because v1 has already admitted those bytes.
+
+The historical Aeson codec in this directory models consumer fixtures rather
+than retained production history. Real adoption still requires Plan 289's exact
+build-pair inventory and Plan 295's consumer stream, queue, projection, process,
+and workflow evidence.
diff --git a/test/conformance-structural-text-sets/StructuralTextSets/LabelLookup/ReadModelHoles.hs b/test/conformance-structural-text-sets/StructuralTextSets/LabelLookup/ReadModelHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/StructuralTextSets/LabelLookup/ReadModelHoles.hs
@@ -0,0 +1,14 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module StructuralTextSets.LabelLookup.ReadModelHoles
+  ( labelLookupQuery
+  ) where
+
+import Generated.StructuralTextSets.LabelLookup.ReadModelTable (labelLookupQualifiedTable)
+import Generated.StructuralTextSets.LabelLookup.QueryContract (LabelLookupQueryInput, LabelLookupQueryResult)
+import Hasql.Transaction qualified as Tx
+
+-- HOLE: query "public"."label_values" via labelLookupQualifiedTable; never rely on search_path.
+-- The generated QueryContract owns query input/result type identity.
+-- Declared columns:
+labelLookupQuery :: LabelLookupQueryInput -> Tx.Transaction LabelLookupQueryResult
+labelLookupQuery _input = labelLookupQualifiedTable `seq` error "HOLE: fill label_lookup query"
diff --git a/test/conformance-structural-text-sets/StructuralTextSets/LabelStore/BehaviorHoles.hs b/test/conformance-structural-text-sets/StructuralTextSets/LabelStore/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/StructuralTextSets/LabelStore/BehaviorHoles.hs
@@ -0,0 +1,13 @@
+-- Consumer-owned behavioral witnesses. Created once; never overwritten.
+module StructuralTextSets.LabelStore.BehaviorHoles (behaviorWitnesses) where
+
+import Generated.StructuralTextSets.LabelStore.BehaviorContract
+
+behaviorWitnesses :: [BehaviorWitness]
+behaviorWitnesses =
+  [ Pending (BehaviorKey "behavior-v1-bf90d9e010468fdc") -- LabelStoreEmpty x StoreLabels: live transition
+  , Pending (BehaviorKey "behavior-v1-c15c80eb55d3be38") -- LabelStoreStored x StoreLabels: required rejection
+  , Pending (BehaviorKey "behavior-v1-21ff727d241ecd71") -- LabelStoreEmpty x ImportLegacyLabels: required rejection
+  , Pending (BehaviorKey "behavior-v1-3fe9a1bf4f7fe73f") -- LabelStoreStored x ImportLegacyLabels: required rejection
+  , Pending (BehaviorKey "behavior-v1-7f54aab10d4d248f") -- LabelStoreEmpty x ImportLegacyLabels: replay-only transition
+  ]
diff --git a/test/conformance-structural-text-sets/StructuralTextSets/ProjectionCatalog/ProjectionCatalogHoles.hs b/test/conformance-structural-text-sets/StructuralTextSets/ProjectionCatalog/ProjectionCatalogHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/StructuralTextSets/ProjectionCatalog/ProjectionCatalogHoles.hs
@@ -0,0 +1,23 @@
+-- This is a HAND-OWNED hole module. keiro-dsl creates it once and never overwrites it.
+module StructuralTextSets.ProjectionCatalog.ProjectionCatalogHoles
+  ( LabelWriterEvent (..)
+  , applyLabelWriterLive
+  , labelWriterIdempotencyKey
+  , applyLabelWriterReplay
+  , decodeLabelWriterReplay
+  ) where
+
+import Hasql.Transaction qualified as Tx
+import Keiro.Projection.Catalog qualified as Catalog
+import Kiroku.Store.Types (EventId, RecordedEvent)
+
+-- Projection owner label_writer (order 10).
+data LabelWriterEvent = LabelWriterEvent
+applyLabelWriterLive :: RecordedEvent -> Tx.Transaction ()
+applyLabelWriterLive = error "HOLE: fill label_writer live apply"
+labelWriterIdempotencyKey :: RecordedEvent -> EventId
+labelWriterIdempotencyKey = error "HOLE: return the durable event id for label_writer"
+decodeLabelWriterReplay :: RecordedEvent -> Catalog.ReplayDecodeResult LabelWriterEvent
+decodeLabelWriterReplay = error "HOLE: classify and decode every label_writer source event"
+applyLabelWriterReplay :: LabelWriterEvent -> RecordedEvent -> Tx.Transaction ()
+applyLabelWriterReplay = error "HOLE: fill label_writer replay apply without live-only side effects"
diff --git a/test/conformance-structural-text-sets/keiro-dsl-cabal-fragment.context.structural-text-sets.txt b/test/conformance-structural-text-sets/keiro-dsl-cabal-fragment.context.structural-text-sets.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/keiro-dsl-cabal-fragment.context.structural-text-sets.txt
@@ -0,0 +1,59 @@
+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/structural-text-sets.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.StructuralTextSets.Bindings
+    Generated.StructuralTextSets.BehaviorSourceMap
+    Generated.StructuralTextSets.LabelJobs.Queue
+    Generated.StructuralTextSets.LabelJobs.QueueCodec
+    Generated.StructuralTextSets.LabelJobs.QueuePolicy
+    Generated.StructuralTextSets.LabelLookup.QueryContract
+    Generated.StructuralTextSets.LabelLookup.ReadModel
+    Generated.StructuralTextSets.LabelLookup.ReadModelHarness
+    Generated.StructuralTextSets.LabelLookup.ReadModelTable
+    Generated.StructuralTextSets.LabelStore.BehaviorContract
+    Generated.StructuralTextSets.LabelStore.Codec
+    Generated.StructuralTextSets.LabelStore.Domain
+    Generated.StructuralTextSets.LabelStore.EventStream
+    Generated.StructuralTextSets.LabelStore.Harness
+    Generated.StructuralTextSets.LabelStore.Projection
+    Generated.StructuralTextSets.LabelStore.Transducer
+    Generated.StructuralTextSets.ProjectionCatalog
+    Generated.StructuralTextSets.ReplayAudit
+    Generated.StructuralTextSets.Structural.Shape.LabelEnvelope
+    Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels
+    Generated.StructuralTextSets.Structural.Shape.TextLabels
+    Generated.StructuralTextSets.StructuralConformance
+    StructuralTextSets.LabelLookup.ReadModelHoles
+    StructuralTextSets.LabelStore.BehaviorHoles
+    StructuralTextSets.ProjectionCatalog.ProjectionCatalogHoles
+
+build-depends:
+    , aeson
+    , base
+    , containers
+    , effectful-core
+    , hasql-transaction
+    , keiki
+    , keiro
+    , keiro-core
+    , keiro-dsl
+    , keiro-pgmq
+    , kiroku-store
+    , text
+
+consumer-packages:
+    keiro-dsl
+
+consumer-modules:
+    Conformance.StructuralTextSets.Bindings
+    Conformance.StructuralTextSets.Domain
diff --git a/test/conformance-structural-text-sets/keiro-dsl-ledger.context.structural-text-sets.txt b/test/conformance-structural-text-sets/keiro-dsl-ledger.context.structural-text-sets.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-structural-text-sets/keiro-dsl-ledger.context.structural-text-sets.txt
@@ -0,0 +1,88 @@
+keiro-dsl scaffold record v1
+spec: keiro-dsl/test/fixtures/structural-text-sets.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 structural-text-sets structural conformance","path":"Generated/StructuralTextSets/StructuralConformance.hs"}
+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context structural-text-sets behavior source map","path":"Generated/StructuralTextSets/BehaviorSourceMap.hs"}
+module-role {"family":"LabelEnvelope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural LabelEnvelope (line 23)","path":"Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs"}
+module-role {"family":"MaybeTextLabels","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural MaybeTextLabels (line 14)","path":"Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs"}
+module-role {"family":"TextLabels","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural TextLabels (line 4)","path":"Generated/StructuralTextSets/Structural/Shape/TextLabels.hs"}
+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.StructuralTextSets.Bindings","path":"Conformance/StructuralTextSets/Bindings.hs"}
+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context structural-text-sets replay-audit assembly","path":"Generated/StructuralTextSets/ReplayAudit.hs"}
+module-role {"family":"ProjectionCatalog","kind":"generated","ownerKind":"projection-catalog","ownerName":"projection-catalog structural-text-sets","path":"Generated/StructuralTextSets/ProjectionCatalog.hs"}
+module-role {"family":"ProjectionCatalogHoles","kind":"hole","ownerKind":"projection-catalog","ownerName":"projection-catalog structural-text-sets","path":"StructuralTextSets/ProjectionCatalog/ProjectionCatalogHoles.hs"}
+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/Domain.hs"}
+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/Codec.hs"}
+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/Transducer.hs"}
+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/BehaviorContract.hs"}
+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses LabelStore (line 38)","path":"StructuralTextSets/LabelStore/BehaviorHoles.hs"}
+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/EventStream.hs"}
+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/Projection.hs"}
+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate LabelStore (line 38)","path":"Generated/StructuralTextSets/LabelStore/Harness.hs"}
+module-role {"family":"Queue","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue label_jobs (line 64)","path":"Generated/StructuralTextSets/LabelJobs/Queue.hs"}
+module-role {"family":"QueuePolicy","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue label_jobs (line 64)","path":"Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs"}
+module-role {"family":"QueueCodec","kind":"generated","ownerKind":"workqueue","ownerName":"workqueue label_jobs (line 64)","path":"Generated/StructuralTextSets/LabelJobs/QueueCodec.hs"}
+module-role {"family":"ReadModelTable","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel label_lookup (line 106)","path":"Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs"}
+module-role {"family":"QueryContract","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel label_lookup (line 106)","path":"Generated/StructuralTextSets/LabelLookup/QueryContract.hs"}
+module-role {"family":"ReadModel","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel label_lookup (line 106)","path":"Generated/StructuralTextSets/LabelLookup/ReadModel.hs"}
+module-role {"family":"ReadModelHoles","kind":"hole","ownerKind":"readmodel","ownerName":"readmodel label_lookup (line 106)","path":"StructuralTextSets/LabelLookup/ReadModelHoles.hs"}
+module-role {"family":"ReadModelHarness","kind":"generated","ownerKind":"readmodel","ownerName":"readmodel label_lookup (line 106)","path":"Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs"}
+generated Generated/StructuralTextSets/StructuralConformance.hs
+generated Generated/StructuralTextSets/BehaviorSourceMap.hs
+generated Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs
+generated Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs
+generated Generated/StructuralTextSets/Structural/Shape/TextLabels.hs
+hole Conformance/StructuralTextSets/Bindings.hs
+generated Generated/StructuralTextSets/ReplayAudit.hs
+generated Generated/StructuralTextSets/ProjectionCatalog.hs
+hole StructuralTextSets/ProjectionCatalog/ProjectionCatalogHoles.hs
+generated Generated/StructuralTextSets/LabelStore/Domain.hs
+generated Generated/StructuralTextSets/LabelStore/Codec.hs
+generated Generated/StructuralTextSets/LabelStore/Transducer.hs
+generated Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
+hole StructuralTextSets/LabelStore/BehaviorHoles.hs
+generated Generated/StructuralTextSets/LabelStore/EventStream.hs
+generated Generated/StructuralTextSets/LabelStore/Projection.hs
+generated Generated/StructuralTextSets/LabelStore/Harness.hs
+generated Generated/StructuralTextSets/LabelJobs/Queue.hs
+generated Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
+generated Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
+generated Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
+generated Generated/StructuralTextSets/LabelLookup/QueryContract.hs
+generated Generated/StructuralTextSets/LabelLookup/ReadModel.hs
+hole StructuralTextSets/LabelLookup/ReadModelHoles.hs
+generated Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
+mapping {"bindingSymbol":"Conformance.StructuralTextSets.Bindings.labelEnvelopeBinding","bindingVersion":"1","canonicalType":"conformance.structural-text-sets.LabelEnvelope.v1","mode":"structural","module":"Conformance.StructuralTextSets.Domain","package":"keiro-dsl","schema":1,"specName":"LabelEnvelope","type":"LabelEnvelope"}
+mapping {"bindingSymbol":"Conformance.StructuralTextSets.Bindings.maybeTextLabelsBinding","bindingVersion":"1","canonicalType":"conformance.structural-text-sets.MaybeTextLabels.v1","mode":"structural","module":"Conformance.StructuralTextSets.Domain","package":"keiro-dsl","schema":1,"specName":"MaybeTextLabels","type":"MaybeTextLabels"}
+mapping {"bindingSymbol":"Conformance.StructuralTextSets.Bindings.textLabelsBinding","bindingVersion":"1","canonicalType":"conformance.structural-text-sets.TextLabels.v1","mode":"structural","module":"Conformance.StructuralTextSets.Domain","package":"keiro-dsl","schema":1,"specName":"TextLabels","type":"TextLabels"}
+binding {"kind":"binding","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":"labelled","schema":1,"signature":"labelEnvelopeBinding.labelled :: Map Text (Set Text)","symbol":"labelEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":"namedOptional","schema":1,"signature":"labelEnvelopeBinding.namedOptional :: MaybeTextLabels","symbol":"labelEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":"optionalLabels","schema":1,"signature":"labelEnvelopeBinding.optionalLabels :: Maybe (Set Text)","symbol":"labelEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":"primary","schema":1,"signature":"labelEnvelopeBinding.primary :: Set Text","symbol":"labelEnvelopeBinding"}
+binding {"kind":"binding","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":"sequence","schema":1,"signature":"labelEnvelopeBinding.sequence :: [Set Text]","symbol":"labelEnvelopeBinding"}
+binding {"kind":"fixtures","mappedName":"LabelEnvelope","module":"Conformance.StructuralTextSets.Bindings","path":null,"schema":1,"signature":"labelEnvelopeFixtures :: FixtureCases Conformance.StructuralTextSets.Domain.LabelEnvelope","symbol":"labelEnvelopeFixtures"}
+binding {"kind":"binding","mappedName":"MaybeTextLabels","module":"Conformance.StructuralTextSets.Bindings","path":"value","schema":1,"signature":"maybeTextLabelsBinding.value :: Maybe (Set Text)","symbol":"maybeTextLabelsBinding"}
+binding {"kind":"fixtures","mappedName":"MaybeTextLabels","module":"Conformance.StructuralTextSets.Bindings","path":null,"schema":1,"signature":"maybeTextLabelsFixtures :: FixtureCases Conformance.StructuralTextSets.Domain.MaybeTextLabels","symbol":"maybeTextLabelsFixtures"}
+binding {"kind":"binding","mappedName":"TextLabels","module":"Conformance.StructuralTextSets.Bindings","path":"value","schema":1,"signature":"textLabelsBinding.value :: Set Text","symbol":"textLabelsBinding"}
+binding {"kind":"fixtures","mappedName":"TextLabels","module":"Conformance.StructuralTextSets.Bindings","path":null,"schema":1,"signature":"textLabelsFixtures :: FixtureCases Conformance.StructuralTextSets.Domain.TextLabels","symbol":"textLabelsFixtures"}
+binding {"kind":"initial-value","mappedName":"TextLabels","module":"Conformance.StructuralTextSets.Bindings","path":null,"schema":1,"signature":"initialTextLabels :: Conformance.StructuralTextSets.Domain.TextLabels","symbol":"initialTextLabels"}
+behavior {"aggregate":"LabelStore","command":"ImportLegacyLabels","evidence":"generated-authoritative","key":"behavior-v1-21ff727d241ecd71","kind":"replay-transition","outputs":[{"command":"ImportLegacyLabels","ownership":"generated-command-identity"}],"source":"Empty"}
+behavior {"aggregate":"LabelStore","command":"ImportLegacyLabels","evidence":"generated-authoritative","key":"behavior-v1-3fe9a1bf4f7fe73f","kind":"required-rejection","outputs":[],"source":"Stored"}
+behavior {"aggregate":"LabelStore","command":"ImportLegacyLabels","evidence":"generated-authoritative","key":"behavior-v1-7f54aab10d4d248f","kind":"required-rejection","outputs":[],"source":"Empty"}
+behavior {"aggregate":"LabelStore","command":"StoreLabels","evidence":"generated-authoritative","key":"behavior-v1-bf90d9e010468fdc","kind":"live-transition","outputs":[{"command":"StoreLabels","ownership":"generated-command-identity"},{"command":"StoreLabels","ownership":"generated-command-identity"}],"source":"Empty"}
+behavior {"aggregate":"LabelStore","command":"StoreLabels","evidence":"generated-authoritative","key":"behavior-v1-c15c80eb55d3be38","kind":"required-rejection","outputs":[],"source":"Stored"}
+projection-catalog-fact cursor|label_lookup|label-writer|106
+projection-catalog-fact delivery|label_writer|subscription|94
+projection-catalog-fact freshness|label_lookup|wait-for-head:entire-log|106
+projection-catalog-fact group|label_rebuild|label_table|label_table|89
+projection-catalog-fact owner|label_writer|all|label_rebuild|label_table|10|label-writer|label-writer-v1|from-beginning|explicit|94
+projection-catalog-fact query|label_lookup|label_rebuild|label_table|label_table|106
+projection-catalog-fact supply|label_lookup|label_writer|label_rebuild|label_table|106|94
+projection-catalog-fact target|label_table|public|label_values|clear||83
+query-contract-baseline v1
+query-contract {"mappedDependencies":["MaybeTextLabels"],"position":"input","readModel":"label_lookup","typeExpression":"MaybeTextLabels"}
+query-contract {"mappedDependencies":["LabelEnvelope","MaybeTextLabels"],"position":"result","readModel":"label_lookup","typeExpression":"LabelEnvelope"}
+semantic-impact {"declarations":[{"consequences":[{"consumer":"LabelStore","kind":"consumer-build"},{"consumer":"workqueue:label_jobs","kind":"consumer-build"},{"consumer":"read-model-query:label_lookup:result","kind":"consumer-build"},{"aggregate":"LabelStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"label_jobs"},{"kind":"query-api","position":"result","readModel":"label_lookup"}],"consumerEvidence":[{"consumer":"LabelStore","operation":null,"path":"LabelStore command ImportLegacyLabels .envelope : LabelEnvelope","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore command StoreLabels .envelope : LabelEnvelope","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsAudited .envelope : LabelEnvelope","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsStored .envelope : LabelEnvelope","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LegacyLabelsImported .envelope : LabelEnvelope","surface":"private-event-payload"},{"consumer":"workqueue:label_jobs","operation":null,"path":"workqueue label_jobs payload .envelope : LabelEnvelope","surface":"workqueue-payload"},{"consumer":"read-model-query:label_lookup:result","operation":null,"path":"readmodel label_lookup query result : LabelEnvelope","surface":"read-model-query-result"}],"consumers":["LabelStore","workqueue:label_jobs","read-model-query:label_lookup:result"],"declaration":"LabelEnvelope","identity":"structural\u001fkeiro-dsl:Conformance.StructuralTextSets.Domain:LabelEnvelope\u001fConformance.StructuralTextSets.Bindings.labelEnvelopeBinding\u001f1\u001fconformance.structural-text-sets.LabelEnvelope.v1\u001fConformance.StructuralTextSets.Bindings.labelEnvelopeFixtures\u001f\u001f78d1994bf9d1b15c\u001frecord:LabelEnvelope:labelled=labelled,namedOptional=namedOptional,optionalLabels=optionalLabels,primary=primary,sequence=sequence"},{"consequences":[{"consumer":"LabelStore","kind":"consumer-build"},{"consumer":"workqueue:label_jobs","kind":"consumer-build"},{"consumer":"read-model-query:label_lookup:input","kind":"consumer-build"},{"consumer":"read-model-query:label_lookup:result","kind":"consumer-build"},{"aggregate":"LabelStore","kind":"private-event-history"},{"kind":"workqueue-history","workqueue":"label_jobs"},{"kind":"query-api","position":"input","readModel":"label_lookup"},{"kind":"query-api","position":"result","readModel":"label_lookup"}],"consumerEvidence":[{"consumer":"LabelStore","operation":null,"path":"LabelStore command ImportLegacyLabels .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore command ImportLegacyLabels .optionalLabels : MaybeTextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore command StoreLabels .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore command StoreLabels .optionalLabels : MaybeTextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsAudited .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsAudited .optionalLabels : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsStored .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsStored .optionalLabels : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LegacyLabelsImported .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LegacyLabelsImported .optionalLabels : MaybeTextLabels","surface":"private-event-payload"},{"consumer":"workqueue:label_jobs","operation":null,"path":"workqueue label_jobs payload .envelope : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"workqueue-payload"},{"consumer":"workqueue:label_jobs","operation":null,"path":"workqueue label_jobs payload .optionalLabels : MaybeTextLabels","surface":"workqueue-payload"},{"consumer":"read-model-query:label_lookup:input","operation":null,"path":"readmodel label_lookup query input : MaybeTextLabels","surface":"read-model-query-input"},{"consumer":"read-model-query:label_lookup:result","operation":null,"path":"readmodel label_lookup query result : LabelEnvelope .namedOptional : MaybeTextLabels","surface":"read-model-query-result"}],"consumers":["LabelStore","workqueue:label_jobs","read-model-query:label_lookup:input","read-model-query:label_lookup:result"],"declaration":"MaybeTextLabels","identity":"structural\u001fkeiro-dsl:Conformance.StructuralTextSets.Domain:MaybeTextLabels\u001fConformance.StructuralTextSets.Bindings.maybeTextLabelsBinding\u001f1\u001fconformance.structural-text-sets.MaybeTextLabels.v1\u001fConformance.StructuralTextSets.Bindings.maybeTextLabelsFixtures\u001f\u001fc3f0c4d157c0892c\u001fvalue:Optional(Set(Text))"},{"consequences":[{"consumer":"LabelStore","kind":"consumer-build"},{"consumer":"workqueue:label_jobs","kind":"consumer-build"},{"aggregate":"LabelStore","kind":"private-event-history"},{"aggregate":"LabelStore","kind":"snapshot-hydration"},{"kind":"workqueue-history","workqueue":"label_jobs"}],"consumerEvidence":[{"consumer":"LabelStore","operation":null,"path":"LabelStore command ImportLegacyLabels .labels : TextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore command StoreLabels .labels : TextLabels","surface":"aggregate-command"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsAudited .labels : TextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LabelsStored .labels : TextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore event LegacyLabelsImported .labels : TextLabels","surface":"private-event-payload"},{"consumer":"LabelStore","operation":null,"path":"LabelStore register current : TextLabels","surface":"snapshot-register"},{"consumer":"workqueue:label_jobs","operation":null,"path":"workqueue label_jobs payload .labels : TextLabels","surface":"workqueue-payload"}],"consumers":["LabelStore","workqueue:label_jobs"],"declaration":"TextLabels","identity":"structural\u001fkeiro-dsl:Conformance.StructuralTextSets.Domain:TextLabels\u001fConformance.StructuralTextSets.Bindings.textLabelsBinding\u001f1\u001fconformance.structural-text-sets.TextLabels.v1\u001fConformance.StructuralTextSets.Bindings.textLabelsFixtures\u001fConformance.StructuralTextSets.Bindings.initialTextLabels\u001f68498398eaf249eb\u001fvalue:Set(Text)"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["LabelEnvelope","MaybeTextLabels","TextLabels"]}
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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context structural-conformance behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context structural-conformance replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural ArtifactInfo; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural ArtifactKind; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural ArtifactLocation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from mapped structural ArtifactMetadata; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context structural-conformance structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 4) from context structural-conformance structural conformance; do not edit.
 module Generated.StructuralConformance.StructuralConformance
   ( structuralConformanceAssertions
   ) where
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.17.0.0 (language keiro-dsl 4) from context structural-conformance mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.
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.17.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural ArtifactClaim; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from mapped structural ProjectClaim; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural conformance; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 6) from context workspace-nominal-proof mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.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.17.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Transducer
   ( reservationTransducer
   , reservationFoldFingerprint
diff --git a/test/fixtures/bare-containers.keiro b/test/fixtures/bare-containers.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/bare-containers.keiro
@@ -0,0 +1,124 @@
+language keiro-dsl 6
+context bare-containers
+
+id ItemId prefix=item
+
+mapped structural value MaybeText {
+  haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=MaybeText
+  binding = "Conformance.BareContainers.Bindings.maybeTextBinding"
+  binding-version = "1"
+  canonical-type = "conformance.bare-containers.MaybeText.v1"
+  fixtures = "Conformance.BareContainers.Bindings.maybeTextFixtures"
+  initial = "Conformance.BareContainers.Bindings.initialMaybeText"
+  wire Optional Text
+}
+
+mapped structural value TextList {
+  haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=TextList
+  binding = "Conformance.BareContainers.Bindings.textListBinding"
+  binding-version = "1"
+  canonical-type = "conformance.bare-containers.TextList.v1"
+  fixtures = "Conformance.BareContainers.Bindings.textListFixtures"
+  wire List Text
+}
+
+mapped structural value TextMap {
+  haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=TextMap
+  binding = "Conformance.BareContainers.Bindings.textMapBinding"
+  binding-version = "1"
+  canonical-type = "conformance.bare-containers.TextMap.v1"
+  fixtures = "Conformance.BareContainers.Bindings.textMapFixtures"
+  wire Map Text
+}
+
+mapped structural value NestedIds {
+  haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=NestedIds
+  binding = "Conformance.BareContainers.Bindings.nestedIdsBinding"
+  binding-version = "1"
+  canonical-type = "conformance.bare-containers.NestedIds.v1"
+  fixtures = "Conformance.BareContainers.Bindings.nestedIdsFixtures"
+  wire List (Optional ItemId)
+}
+
+mapped structural record BareEnvelope {
+  haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=BareEnvelope
+  binding = "Conformance.BareContainers.Bindings.bareEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.bare-containers.BareEnvelope.v1"
+  fixtures = "Conformance.BareContainers.Bindings.bareEnvelopeFixtures"
+  wire object constructor=BareEnvelope unknown-fields=reject {
+    optionalLabel as "optionalLabel" : MaybeText optional on-missing=null
+    labels as "labels" : TextList optional on-missing=[]
+    attributes as "attributes" : TextMap optional on-missing={}
+    nestedIds as "nestedIds" : NestedIds required
+  }
+}
+
+aggregate BareStore
+  regs
+    current MaybeText = initial
+  states Empty Stored!
+
+  command Store { optionalLabel:MaybeText labels:TextList attributes:TextMap envelope:BareEnvelope }
+  event StoredValue = fields(Store)
+
+  Empty -- Store -->
+    write current := optionalLabel
+    emit StoredValue
+    goto Stored
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="bare-containers-v1"
+
+workqueue bare_jobs {
+  queue logical = "bare.jobs"
+  derive physical = "bare_jobs"
+         dlq = "bare_jobs_dlq"
+         table = "pgmq.q_bare_jobs"
+  payload BareJob {
+    optionalLabel -> "optional_label" : MaybeText
+    labels -> "labels" : TextList
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+target bare_table {
+  schema = "public"
+  table = "bare_values"
+  reset = clear
+}
+
+rebuild-group bare_rebuild {
+  targets = [ bare_table ]
+  order = [ bare_table ]
+}
+
+projection-owner bare_writer {
+  source = all
+  delivery = subscription
+  group = bare_rebuild
+  targets = [ bare_table ]
+  order = 10
+  subscription = "bare-writer"
+  dedup = "bare-writer-v1"
+  checkpoint-on-missing = from-beginning
+  replay = explicit
+}
+
+readmodel bare_lookup {
+  columns {}
+  query input = MaybeText
+  query result = List TextList
+  version = 1
+  shape = "fnv1a:3c07a19c552c3547"
+  freshness = wait-for-head entire-log
+  group = bare_rebuild
+  targets = [ bare_table ]
+}
diff --git a/test/fixtures/calendar-days.keiro b/test/fixtures/calendar-days.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/calendar-days.keiro
@@ -0,0 +1,108 @@
+language keiro-dsl 6
+context calendar-days
+
+mapped structural value LocalDay {
+  haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=LocalDay
+  binding = "Conformance.CalendarDays.Bindings.localDayBinding"
+  binding-version = "1"
+  canonical-type = "conformance.calendar-days.LocalDay.v1"
+  fixtures = "Conformance.CalendarDays.Bindings.localDayFixtures"
+  initial = "Conformance.CalendarDays.Bindings.initialLocalDay"
+  wire Day
+}
+
+mapped structural value MaybeLocalDay {
+  haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=MaybeLocalDay
+  binding = "Conformance.CalendarDays.Bindings.maybeLocalDayBinding"
+  binding-version = "1"
+  canonical-type = "conformance.calendar-days.MaybeLocalDay.v1"
+  fixtures = "Conformance.CalendarDays.Bindings.maybeLocalDayFixtures"
+  wire Optional Day
+}
+
+mapped structural record CalendarEnvelope {
+  haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=CalendarEnvelope
+  binding = "Conformance.CalendarDays.Bindings.calendarEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.calendar-days.CalendarEnvelope.v1"
+  fixtures = "Conformance.CalendarDays.Bindings.calendarEnvelopeFixtures"
+  wire object constructor=CalendarEnvelope unknown-fields=reject {
+    primary as "primary" : Day required
+    optionalDay as "optionalDay" : Optional Day optional on-missing=null
+    namedOptional as "namedOptional" : MaybeLocalDay required
+    sequence as "sequence" : List Day required
+    labelled as "labelled" : Map Day required
+  }
+}
+
+aggregate CalendarStore
+  regs
+    current LocalDay = initial
+  states Empty Stored!
+
+  command StoreDate { day:LocalDay optionalDay:MaybeLocalDay envelope:CalendarEnvelope }
+  event DateStored = fields(StoreDate)
+  event DateAudited = fields(StoreDate)
+
+  Empty -- StoreDate -->
+    write current := day
+    emit DateStored
+    emit DateAudited
+    goto Stored
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="calendar-days-v1"
+
+workqueue calendar_jobs {
+  queue logical = "calendar.jobs"
+  derive physical = "calendar_jobs"
+         dlq = "calendar_jobs_dlq"
+         table = "pgmq.q_calendar_jobs"
+  payload CalendarJob {
+    day -> "day" : LocalDay
+    optionalDay -> "optional_day" : MaybeLocalDay
+    envelope -> "envelope" : CalendarEnvelope
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+target calendar_table {
+  schema = "public"
+  table = "calendar_values"
+  reset = clear
+}
+
+rebuild-group calendar_rebuild {
+  targets = [ calendar_table ]
+  order = [ calendar_table ]
+}
+
+projection-owner calendar_writer {
+  source = all
+  delivery = subscription
+  group = calendar_rebuild
+  targets = [ calendar_table ]
+  order = 10
+  subscription = "calendar-writer"
+  dedup = "calendar-writer-v1"
+  checkpoint-on-missing = from-beginning
+  replay = explicit
+}
+
+readmodel calendar_lookup {
+  columns {}
+  query input = MaybeLocalDay
+  query result = CalendarEnvelope
+  version = 1
+  shape = "fnv1a:3c07a19c552c3547"
+  freshness = wait-for-head entire-log
+  group = calendar_rebuild
+  targets = [ calendar_table ]
+}
diff --git a/test/fixtures/checked-mapping-replay-workspace/domain/service.keiro b/test/fixtures/checked-mapping-replay-workspace/domain/service.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/checked-mapping-replay-workspace/domain/service.keiro
@@ -0,0 +1,116 @@
+language keiro-dsl 6
+context checked-mapping-replay
+
+aggregate ReplayLedger
+  regs
+    current ReplayEnvelope = initial
+    currentId RetainedId = placeholder
+  states Empty Recorded!
+
+  command Record { retainedId:RetainedId envelope:ReplayEnvelope }
+  command ImportLegacy { retainedId:RetainedId envelope:ReplayEnvelope }
+  event MappingRecorded = fields(Record)
+  event MappingAudited = fields(Record)
+  event LegacyMappingImported = fields(ImportLegacy)
+
+  Empty -- Record -->
+    write current := envelope
+    write currentId := retainedId
+    emit MappingRecorded
+    emit MappingAudited
+    goto Recorded
+
+  replay-only Empty -- ImportLegacy -->
+    write current := envelope
+    write currentId := retainedId
+    emit LegacyMappingImported
+    goto Recorded
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="checked-mapping-replay-v1"
+
+aggregate ReplayTarget
+  regs
+    latest ReplayEnvelope = initial
+  states Ready
+  command Store { retainedId:RetainedId envelope:ReplayEnvelope }
+  event Stored = fields(Store)
+  Ready -- Store --> write latest := envelope ; emit Stored ; goto Ready
+
+process ReplayReaction
+  name "checked-mapping-replay-reaction"
+  reactions version 1
+  input ReplayRequested { retainedId:RetainedId envelope:ReplayEnvelope }
+  correlate input.retainedId via idText
+  saga ReplayLedger category "checkedMappingReplaySaga"
+  target ReplayTarget
+  projections [ ]
+  on ReplayRequested
+    advance Record { retainedId envelope }
+    dispatch ReplayTarget@input.retainedId Store { retainedId envelope }
+      on-appended AckOk ; on-duplicate AckOk ; on-failed Retry
+  dispatch-id strategy=uuidv5 from=(name, correlationId, sourceEventId, targetStreamName, occurrence)
+  rejected => halt
+  poison => halt
+
+workqueue replay_jobs {
+  queue logical = "checked.mapping.replay"
+  derive physical = "checked_mapping_replay"
+         dlq = "checked_mapping_replay_dlq"
+         table = "pgmq.q_checked_mapping_replay"
+  payload ReplayJob {
+    retainedId -> "retained_id" : RetainedId
+    envelope -> "envelope" : ReplayEnvelope
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+target replay_table {
+  schema = "public"
+  table = "checked_mapping_replay"
+  reset = clear
+}
+
+rebuild-group replay_rebuild {
+  targets = [ replay_table ]
+  order = [ replay_table ]
+}
+
+projection-owner replay_writer {
+  source = all
+  delivery = subscription
+  group = replay_rebuild
+  targets = [ replay_table ]
+  order = 10
+  subscription = "checked-mapping-replay-writer"
+  dedup = "checked-mapping-replay-writer-v1"
+  checkpoint-on-missing = from-beginning
+  replay = explicit
+}
+
+readmodel replay_lookup {
+  columns {}
+  query input = ReplayEnvelope
+  query result = List ReplayEnvelope
+  version = 1
+  shape = "fnv1a:3c07a19c552c3547"
+  freshness = wait-for-head entire-log
+  group = replay_rebuild
+  targets = [ replay_table ]
+}
+
+contract replay_events {
+  schemaVersion 1
+  discriminator messageType
+  topic replayEvents "checked.mapping.replay.events"
+  event ReplayLinked on replayEvents {
+    retainedId: RetainedId
+  }
+}
diff --git a/test/fixtures/checked-mapping-replay-workspace/domain/values.keiro b/test/fixtures/checked-mapping-replay-workspace/domain/values.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/checked-mapping-replay-workspace/domain/values.keiro
@@ -0,0 +1,67 @@
+language keiro-dsl 6
+context checked-mapping-replay
+
+id RetainedId prefix=retained domain=typeid-v5-or-v7
+
+mapped structural value MaybeLabel {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=MaybeLabel
+  binding = "Conformance.CheckedMappingReplay.Bindings.maybeLabelBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.MaybeLabel.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.maybeLabelFixtures"
+  wire Optional Text
+}
+
+mapped structural value ImportantDays {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=ImportantDays
+  binding = "Conformance.CheckedMappingReplay.Bindings.importantDaysBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.ImportantDays.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.importantDaysFixtures"
+  wire List Day
+}
+
+mapped structural value TextLabels {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=TextLabels
+  binding = "Conformance.CheckedMappingReplay.Bindings.textLabelsBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.TextLabels.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.textLabelsFixtures"
+  wire Set Text
+}
+
+mapped refined ContentHash {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=ContentHash
+  binding = "Conformance.CheckedMappingReplay.Bindings.contentHashBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.ContentHash.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.contentHashFixtures"
+  wire base16-bytes
+}
+
+mapped structural value MaybeContentHash {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=MaybeContentHash
+  binding = "Conformance.CheckedMappingReplay.Bindings.maybeContentHashBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.MaybeContentHash.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.maybeContentHashFixtures"
+  wire Optional ContentHash
+}
+
+mapped structural record ReplayEnvelope {
+  haskell package=keiro-dsl module=Conformance.CheckedMappingReplay.Domain type=ReplayEnvelope
+  binding = "Conformance.CheckedMappingReplay.Bindings.replayEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.checked-mapping-replay.ReplayEnvelope.v1"
+  fixtures = "Conformance.CheckedMappingReplay.Bindings.replayEnvelopeFixtures"
+  initial = "Conformance.CheckedMappingReplay.Bindings.initialReplayEnvelope"
+  wire object constructor=ReplayEnvelope unknown-fields=reject {
+    label as "label" : MaybeLabel required
+    days as "days" : ImportantDays required
+    labels as "labels" : TextLabels required
+    contentHash as "contentHash" : MaybeContentHash required
+    primary as "primary" : RetainedId required
+    identities as "identities" : Map[RetainedId] Text required
+    optionalLabels as "optionalLabels" : Optional (Set Text) optional on-missing=null
+  }
+}
diff --git a/test/fixtures/checked-mapping-replay-workspace/release-manifest.json b/test/fixtures/checked-mapping-replay-workspace/release-manifest.json
new file mode 100644
--- /dev/null
+++ b/test/fixtures/checked-mapping-replay-workspace/release-manifest.json
@@ -0,0 +1,182 @@
+{
+  "schema": "keiro.checked-mapping-release/v1",
+  "initiative": "docs/masterplans/44-add-checked-value-mappings-while-preserving-stream-and-workflow-replay-across-refactors.md",
+  "verifiedAt": "2026-09-20",
+  "repositoryEvidence": {
+    "compatibilityPlan": "docs/plans/289-gate-mapping-evolution-with-serialized-and-cross-version-replay-evidence.md",
+    "featurePlans": [
+      "docs/plans/290-support-named-bare-container-structural-mappings-with-transitive-nullability.md",
+      "docs/plans/291-add-calendar-day-mappings-with-a-frozen-lossless-codec-contract.md",
+      "docs/plans/292-add-structural-text-sets-with-explicit-canonical-wire-semantics.md",
+      "docs/plans/293-add-declarative-base16-byte-refinements-with-total-consumer-bindings.md",
+      "docs/plans/294-add-explicit-versioned-uuid-admission-domains-with-sound-keiki-evidence.md"
+    ],
+    "integratedPlan": "docs/plans/295-rehearse-checked-mapping-adoption-against-historical-streams-and-workflow-journals.md",
+    "integratedFixture": "keiro-dsl/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json",
+    "milestones": {
+      "integratedCorpus": true,
+      "evolutionMatrix": true,
+      "consumerHistory": true,
+      "retirementRehearsal": true
+    },
+    "consumerHistoryEvidence": {
+      "consumer": "mori://shinzui/rei",
+      "consumerPlan": "mori://shinzui/rei/plans/239-prove-the-keiro-adoption-on-restored-history-and-close-the-practice-audits",
+      "archiveSourceRevision": "825117f620ba2d474e00b0546960caa7c8d73794",
+      "archiveSha256": "4d63da93222516dba418ffbc251a24f738fb5d0e9d0a759a693eaec711c94c9a",
+      "baselineBinarySha256": "ae9664e50f066dd6813cf952dad7465d9e3a1de75dc54c03cc28f4a9885ff6a2",
+      "candidateBaseRevision": "06556c0aa7265126a5afedd83700db7e00403635",
+      "candidatePatchSha256": "38a8ec9e1227e55bf2ef7ebe94cf6b668ae6f6d2b7027a70506e9eb816f4be2f",
+      "candidateBinarySha256": "6c777caed8953d28783da4c22d72e82810f3d9aaf58f5c9a07ee4e4eb55e15a0",
+      "processHarnessBinarySha256": "073c6c6ae14a9b291bded7798ba77729a87294523a2d8674ab7a9e53a83b85bb",
+      "baselineCandidateReportSha256": "863d98c9624e9ecca5226de6de57f4c801189cc5018f3a1908158cb1d4e72a8c",
+      "privatePayloadsCommitted": false,
+      "streamReplay": {
+        "storeStreams": 10318,
+        "selectedStreams": 10061,
+        "outsideRegisteredCategories": 257,
+        "declaredExcludedStreams": 13,
+        "declaredExcludedEvents": 89,
+        "unexpectedFailures": 0,
+        "baselineCandidateReportsIdentical": true
+      },
+      "retainedValueInventory": {
+        "actionIds": {"total": 3958, "uuidV5": 1594, "uuidV7": 2364},
+        "base16Hashes": {"total": 1214, "rejectedSpellings": 0},
+        "calendarDays": {"total": 3521, "rejectedSpellings": 0},
+        "textSets": {"total": 666, "acceptedNonCanonicalSpellings": 12},
+        "taskCompletedOptionalActor": {"total": 67, "missingKey": 28, "explicitNull": 39}
+      },
+      "processContinuation": {
+        "sourceSubscription": "rei-note-task-propagation",
+        "checkpointBefore": 33237,
+        "checkpointRewoundTo": 28879,
+        "checkpointAfter": 33237,
+        "processStreams": 506,
+        "processStreamVersions": 2323,
+        "targetStreams": 53,
+        "targetStreamVersions": 281,
+        "eventCountBeforeAfter": 33717,
+        "eventDigestBeforeAfter": "13da9a50ba218e1202e1c2fd47870c6d",
+        "streamLinkCountBeforeAfter": 67434,
+        "streamLinkDigestBeforeAfter": "cc8fd398862d0d03e5cc579785e20ee9",
+        "timerCountBeforeAfter": 3917,
+        "timerDigestBeforeAfter": "99b91d4ed4c5a692617c95711dd438c5",
+        "deadLettersBeforeAfter": 0,
+        "outboundEffectsEnabled": false,
+        "workerShape": {"asyncProjections": 0, "processManagers": 1, "timerWorkers": 0}
+      },
+      "workflowInventory": {
+        "registeredWorkflows": 0,
+        "instances": 0,
+        "steps": 0,
+        "children": 0,
+        "result": "not-applicable-empty-history"
+      }
+    },
+    "retirementEvidence": {
+      "consumer": "mori://shinzui/rei",
+      "authoringPath": "mori://shinzui/rei with project-relative domain/shared.keiro (artifact-level URI pending)",
+      "removedPath": "ActionId mapped opaque rei.disruption.ActionId.json@1",
+      "replacement": "checked id ActionId prefix=action domain=typeid-v5-or-v7 using",
+      "removedMappedSurfaceExpectations": 40,
+      "candidatePatchSha256": "38a8ec9e1227e55bf2ef7ebe94cf6b668ae6f6d2b7027a70506e9eb816f4be2f",
+      "oldHistoryPassed": true,
+      "processContinuationPassed": true,
+      "requiredReaderNegativeMutationPassed": true,
+      "genericOpaqueSupportRetained": true
+    }
+  },
+  "wirePolicies": [
+    {
+      "identity": "keiro-calendar-day-v1",
+      "status": "frozen",
+      "vectors": ["keiro-dsl/test/conformance-calendar-days/Main.hs"],
+      "goldens": ["keiro-dsl/test/conformance-calendar-days/fixtures/codec-compare/historical-plus-year.json"]
+    },
+    {
+      "identity": "keiro-text-set-v1",
+      "status": "frozen",
+      "vectors": ["keiro-dsl/test/conformance-structural-text-sets/Main.hs"],
+      "goldens": ["keiro-dsl/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json"]
+    },
+    {
+      "identity": "keiro-base16-bytes-v1",
+      "status": "frozen",
+      "vectors": ["keiro-dsl/test/conformance-refined-base16/Main.hs"],
+      "goldens": ["keiro-dsl/test/conformance-refined-base16/fixtures/codec-compare/uppercase-leading-zero.json"]
+    },
+    {
+      "identity": "keiro-typeid-v5-or-v7-v1",
+      "status": "frozen",
+      "vectors": ["keiro-dsl/test/conformance-id-admission-domains/Main.hs"],
+      "goldens": ["keiro-dsl/test/conformance-checked-mapping-replay/fixtures/retained/mapping-recorded-v1.json"]
+    }
+  ],
+  "retainedImplementations": [
+    {
+      "role": "calendar-day historical reader",
+      "path": "keiro-core/src/Keiro/Codec/CalendarDay.hs",
+      "anchor": "parseCalendarDayText :: Text -> Either Text Day"
+    },
+    {
+      "role": "text-set historical reader",
+      "path": "keiro-core/src/Keiro/Codec/TextSet.hs",
+      "anchor": "parseTextSet :: Value -> Parser (Set Text)"
+    },
+    {
+      "role": "base16 historical reader",
+      "path": "keiro-core/src/Keiro/Codec/Base16Bytes.hs",
+      "anchor": "parseBase16Bytes :: Value -> Parser ByteString"
+    },
+    {
+      "role": "admitted-id legacy decoder",
+      "path": "keiro-dsl/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs",
+      "anchor": "unsafeRetainedIdFromLegacyText :: Text -> RetainedId"
+    },
+    {
+      "role": "retired-event replay-only edge",
+      "path": "keiro-dsl/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs",
+      "anchor": "B.replayOnly"
+    },
+    {
+      "role": "workflow stored-result decoder",
+      "path": "keiro/src/Keiro/Workflow.hs",
+      "anchor": "decodeStored :: (Aeson.FromJSON a) => Text -> Aeson.Value -> Eff es a"
+    },
+    {
+      "role": "pre-UTF-8 deterministic identity probe",
+      "path": "keiro/src/Keiro/DeterministicId.hs",
+      "anchor": "deterministicIdProbes :: Text -> NonEmpty UUID"
+    },
+    {
+      "role": "positional process-manager identity",
+      "path": "keiro/src/Keiro/ProcessManager.hs",
+      "anchor": "legacyDeterministicCommandId :: Text -> Text -> EventId -> Int -> EventId"
+    }
+  ],
+  "gates": {
+    "package-release": {
+      "result": "eligible",
+      "action": "not-performed",
+      "basis": "All policy vectors, frozen goldens, feature plans, and the repository replay gate are present. This is eligibility evidence, not a package publication."
+    },
+    "language-publication": {
+      "result": "eligible",
+      "action": "not-performed",
+      "basis": "The five feature plans and Plan 289 are complete, and Plan 295 repository Milestones 1 and 2 pass. Publication remains a separately authorized atomic action."
+    },
+    "consumer-adoption": {
+      "result": "eligible",
+      "action": "not-performed",
+      "consumer": "mori://shinzui/rei",
+      "basis": "Identical immutable restores produced byte-identical baseline/candidate replay reports over 10,061 selected streams; retained value inventories are complete for the five adopted declarations, process redelivery was effect-isolated and state-neutral, and the workflow inventory is an explicit successful empty-history result. Consumer source edits and deployment remain separately authorized."
+    },
+    "implementation-retirement": {
+      "result": "eligible",
+      "action": "not-performed",
+      "legacyReadersRetained": true,
+      "basis": "The isolated consumer patch replaces exactly the obsolete ActionId mapped-opaque authoring declaration with the checked v5-or-v7 nominal contract and removes its 40 obsolete mapped-surface expectations while old-history replay and process continuation stay green. Generic mapped-opaque support and every historical reader, replay-only edge, workflow branch, and identity family remain retained; an actual consumer change is not performed here."
+    }
+  }
+}
diff --git a/test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace b/test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace
new file mode 100644
--- /dev/null
+++ b/test/fixtures/checked-mapping-replay-workspace/service.keiro-workspace
@@ -0,0 +1,3 @@
+service checked-mapping-replay
+spec domain/values.keiro
+spec domain/service.keiro
diff --git a/test/fixtures/id-admission-domains.keiro b/test/fixtures/id-admission-domains.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/id-admission-domains.keiro
@@ -0,0 +1,63 @@
+language keiro-dsl 6
+context id-admission-domains
+
+id LegacyId prefix=legacy domain=typeid-v5-or-v7
+
+mapped structural record IdentityEnvelope {
+  haskell package=keiro-dsl module=Conformance.IdAdmissionDomains.Domain type=IdentityEnvelope
+  binding = "Conformance.IdAdmissionDomains.Bindings.identityEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.id-admission-domains.IdentityEnvelope.v1"
+  fixtures = "Conformance.IdAdmissionDomains.Bindings.identityEnvelopeFixtures"
+  wire object constructor=IdentityEnvelope unknown-fields=reject {
+    legacyId as "legacyId" : LegacyId required
+    previousId as "previousId" : Optional LegacyId optional on-missing=null
+    labelsById as "labelsById" : Map[LegacyId] Text required
+  }
+}
+
+aggregate IdentityLedger
+  regs
+    current LegacyId = placeholder
+  states Open
+  command RecordIdentity { legacyId:LegacyId envelope:IdentityEnvelope }
+  command ImportLegacyIdentity { legacyId:LegacyId envelope:IdentityEnvelope }
+  event IdentityRecorded = fields(RecordIdentity)
+  event IdentityAudited = fields(RecordIdentity)
+  event LegacyIdentityImported = fields(ImportLegacyIdentity)
+  Open -- RecordIdentity -->
+    write current := cmd.legacyId
+    emit IdentityRecorded
+    emit IdentityAudited
+    goto Open
+  replay-only Open -- ImportLegacyIdentity -->
+    write current := cmd.legacyId
+    emit LegacyIdentityImported
+    goto Open
+
+workqueue identity_work {
+  queue logical = "identity.work"
+  derive physical = "identity_work"
+         dlq = "identity_work_dlq"
+         table = "pgmq.q_identity_work"
+  payload IdentityWork {
+    legacyId -> "legacy_id" : LegacyId
+    envelope -> "envelope" : IdentityEnvelope
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+contract identities {
+  schemaVersion 1
+  discriminator messageType
+  topic identityEvents "identity.events"
+  event IdentityLinked on identityEvents {
+    legacyId: LegacyId
+  }
+}
diff --git a/test/fixtures/refined-base16.keiro b/test/fixtures/refined-base16.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/refined-base16.keiro
@@ -0,0 +1,115 @@
+language keiro-dsl 6
+context refined-base16
+
+mapped refined ContentHash {
+  haskell package=keiro-dsl module=Conformance.RefinedBase16.Domain type=ContentHash
+  binding = "Conformance.RefinedBase16.Bindings.contentHashBinding"
+  binding-version = "1"
+  canonical-type = "conformance.refined-base16.ContentHash.v1"
+  fixtures = "Conformance.RefinedBase16.Bindings.contentHashFixtures"
+  initial = "Conformance.RefinedBase16.Bindings.initialContentHash"
+  wire base16-bytes
+}
+
+mapped structural value MaybeContentHash {
+  haskell package=keiro-dsl module=Conformance.RefinedBase16.Domain type=MaybeContentHash
+  binding = "Conformance.RefinedBase16.Bindings.maybeContentHashBinding"
+  binding-version = "1"
+  canonical-type = "conformance.refined-base16.MaybeContentHash.v1"
+  fixtures = "Conformance.RefinedBase16.Bindings.maybeContentHashFixtures"
+  wire Optional ContentHash
+}
+
+mapped structural record HashEnvelope {
+  haskell package=keiro-dsl module=Conformance.RefinedBase16.Domain type=HashEnvelope
+  binding = "Conformance.RefinedBase16.Bindings.hashEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.refined-base16.HashEnvelope.v1"
+  fixtures = "Conformance.RefinedBase16.Bindings.hashEnvelopeFixtures"
+  wire object constructor=HashEnvelope unknown-fields=reject {
+    primary as "primary" : ContentHash required
+    optionalHash as "optionalHash" : Optional ContentHash optional on-missing=null
+    namedOptional as "namedOptional" : MaybeContentHash required
+    sequence as "sequence" : List ContentHash required
+    labelled as "labelled" : Map ContentHash required
+  }
+}
+
+aggregate HashStore
+  regs
+    current ContentHash = initial
+  states Empty Stored!
+
+  command StoreHash { hash:ContentHash optionalHash:MaybeContentHash envelope:HashEnvelope }
+  command ImportLegacyHash { hash:ContentHash optionalHash:MaybeContentHash envelope:HashEnvelope }
+  event HashStored = fields(StoreHash)
+  event HashAudited = fields(StoreHash)
+  event LegacyHashImported = fields(ImportLegacyHash)
+
+  Empty -- StoreHash -->
+    write current := hash
+    emit HashStored
+    emit HashAudited
+    goto Stored
+
+  replay-only Empty -- ImportLegacyHash -->
+    write current := hash
+    emit LegacyHashImported
+    goto Stored
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="refined-base16-v1"
+
+workqueue hash_jobs {
+  queue logical = "hash.jobs"
+  derive physical = "hash_jobs"
+         dlq = "hash_jobs_dlq"
+         table = "pgmq.q_hash_jobs"
+  payload HashJob {
+    hash -> "hash" : ContentHash
+    optionalHash -> "optional_hash" : MaybeContentHash
+    envelope -> "envelope" : HashEnvelope
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+target hash_table {
+  schema = "public"
+  table = "hash_values"
+  reset = clear
+}
+
+rebuild-group hash_rebuild {
+  targets = [ hash_table ]
+  order = [ hash_table ]
+}
+
+projection-owner hash_writer {
+  source = all
+  delivery = subscription
+  group = hash_rebuild
+  targets = [ hash_table ]
+  order = 10
+  subscription = "hash-writer"
+  dedup = "hash-writer-v1"
+  checkpoint-on-missing = from-beginning
+  replay = explicit
+}
+
+readmodel hash_lookup {
+  columns {}
+  query input = MaybeContentHash
+  query result = HashEnvelope
+  version = 1
+  shape = "fnv1a:3c07a19c552c3547"
+  freshness = wait-for-head entire-log
+  group = hash_rebuild
+  targets = [ hash_table ]
+}
diff --git a/test/fixtures/structural-text-sets.keiro b/test/fixtures/structural-text-sets.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/structural-text-sets.keiro
@@ -0,0 +1,115 @@
+language keiro-dsl 6
+context structural-text-sets
+
+mapped structural value TextLabels {
+  haskell package=keiro-dsl module=Conformance.StructuralTextSets.Domain type=TextLabels
+  binding = "Conformance.StructuralTextSets.Bindings.textLabelsBinding"
+  binding-version = "1"
+  canonical-type = "conformance.structural-text-sets.TextLabels.v1"
+  fixtures = "Conformance.StructuralTextSets.Bindings.textLabelsFixtures"
+  initial = "Conformance.StructuralTextSets.Bindings.initialTextLabels"
+  wire Set Text
+}
+
+mapped structural value MaybeTextLabels {
+  haskell package=keiro-dsl module=Conformance.StructuralTextSets.Domain type=MaybeTextLabels
+  binding = "Conformance.StructuralTextSets.Bindings.maybeTextLabelsBinding"
+  binding-version = "1"
+  canonical-type = "conformance.structural-text-sets.MaybeTextLabels.v1"
+  fixtures = "Conformance.StructuralTextSets.Bindings.maybeTextLabelsFixtures"
+  wire Optional (Set Text)
+}
+
+mapped structural record LabelEnvelope {
+  haskell package=keiro-dsl module=Conformance.StructuralTextSets.Domain type=LabelEnvelope
+  binding = "Conformance.StructuralTextSets.Bindings.labelEnvelopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.structural-text-sets.LabelEnvelope.v1"
+  fixtures = "Conformance.StructuralTextSets.Bindings.labelEnvelopeFixtures"
+  wire object constructor=LabelEnvelope unknown-fields=reject {
+    primary as "primary" : Set Text required
+    optionalLabels as "optionalLabels" : Optional (Set Text) optional on-missing=null
+    namedOptional as "namedOptional" : MaybeTextLabels required
+    sequence as "sequence" : List (Set Text) required
+    labelled as "labelled" : Map (Set Text) required
+  }
+}
+
+aggregate LabelStore
+  regs
+    current TextLabels = initial
+  states Empty Stored!
+
+  command StoreLabels { labels:TextLabels optionalLabels:MaybeTextLabels envelope:LabelEnvelope }
+  command ImportLegacyLabels { labels:TextLabels optionalLabels:MaybeTextLabels envelope:LabelEnvelope }
+  event LabelsStored = fields(StoreLabels)
+  event LabelsAudited = fields(StoreLabels)
+  event LegacyLabelsImported = fields(ImportLegacyLabels)
+
+  Empty -- StoreLabels -->
+    write current := labels
+    emit LabelsStored
+    emit LabelsAudited
+    goto Stored
+
+  replay-only Empty -- ImportLegacyLabels -->
+    write current := labels
+    emit LegacyLabelsImported
+    goto Stored
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="structural-text-sets-v1"
+
+workqueue label_jobs {
+  queue logical = "label.jobs"
+  derive physical = "label_jobs"
+         dlq = "label_jobs_dlq"
+         table = "pgmq.q_label_jobs"
+  payload LabelJob {
+    labels -> "labels" : TextLabels
+    optionalLabels -> "optional_labels" : MaybeTextLabels
+    envelope -> "envelope" : LabelEnvelope
+  }
+  retry maxRetries = 3 delay = 1s dlq = on
+  disposition {
+    storeFailure -> retry 1s
+    commandRejected -> deadLetter
+    decodeFailure -> deadLetter
+    onCodecReject -> deadLetter
+  }
+}
+
+target label_table {
+  schema = "public"
+  table = "label_values"
+  reset = clear
+}
+
+rebuild-group label_rebuild {
+  targets = [ label_table ]
+  order = [ label_table ]
+}
+
+projection-owner label_writer {
+  source = all
+  delivery = subscription
+  group = label_rebuild
+  targets = [ label_table ]
+  order = 10
+  subscription = "label-writer"
+  dedup = "label-writer-v1"
+  checkpoint-on-missing = from-beginning
+  replay = explicit
+}
+
+readmodel label_lookup {
+  columns {}
+  query input = MaybeTextLabels
+  query result = LabelEnvelope
+  version = 1
+  shape = "fnv1a:3c07a19c552c3547"
+  freshness = wait-for-head entire-log
+  group = label_rebuild
+  targets = [ label_table ]
+}
