Release digest: August 17 - 24, 2026 (Week 34)
Version movement
Section titled “Version movement”| Repository | Previous version | Current version |
|---|---|---|
| Arc | v21.19.0 | v22.1.0 |
| AuthProxy | v2.20.0 | v2.21.0 |
| Chronicle | v16.34.1 | v16.38.1 |
| cli | v2.8.1 | v2.16.0 |
| Components | v3.4.0 | v3.5.0 |
| Fundamentals | v7.18.0 | v7.18.1 |
| Prologue | v1.2.0 | v2.0.0 |
| Prompter | v0.2.0 | v0.2.1 |
| Screenplay | v4.0.1 | v4.3.0 |
| Screenplay.CritterStack | First release | v0.21.0 |
| Screenplay.Generation | First release | v0.9.0 |
| Stage | v3.2.0 | v3.8.2 |
| Synopsis | v1.1.0 | v1.1.1 |
- Screenplay (Release v4.3.0): Add an immutable executable semantic model with stable semantic, document, query-argument, and event-contract identities. (#135)
- Screenplay (Release v4.3.0): Add canonical ESM and identity-catalog serialization with deterministic revisions and explicit migration contracts. (#135)
- Screenplay (Release v4.3.0): Add recursive collection and composite values with strict type, optionality, cardinality, and enumeration validation. (#135)
- Screenplay (Release v4.3.0): Add net8, net9, and net10 canonical-byte conformance vectors in CI. (#135)
- Chronicle (Release v16.38.0):
EventTypeGenerationFor<TEventType>attribute for declaring a previous generation of an event type - the event type id is resolved from the referenced current-generation type, so it can never drift from it (#3815) - Chronicle (Release v16.38.0): Roslyn analyzers CHR0049 and CHR0050, validating that
EventTypeGenerationFor<T>’s referenced type is itself a valid, directly-marked[EventType], and that a type never carries both attributes at once (#3815) - Chronicle (Release v16.38.0): Runtime checks that fail loudly at event type registration: an
EventTypeMigration<TUpgrade, TPrevious>whose two generations resolve to different event type ids, or two migrators that both bridge the same generation pair for one event type (#3815, #3816) - Screenplay.CritterStack (Release v0.21.0): Discover exact current and legacy authored saga state, legal lifecycle roles, messages, correlation evidence, and lifecycle provenance. (#50)
- Screenplay.CritterStack (Release v0.21.0): Add framework-neutral signature-stable method identity shared by Marten document operations and Wolverine handler evidence. (#44)
- Screenplay.CritterStack (Release v0.21.0): Add generated-source, overload, constructor, nested payload, direct delivery, event-stream, query, and ambiguity characterization. (#50)
- cli (Release v2.16.0): Preserve aligned actual/logical project metadata and linked-document source contexts through provider, Arc, and Critter generation. (#102)
- cli (Release v2.16.0): Report explicit source display/case policy without exposing physical workspace roots. (#102)
- cli (Release v2.16.0): Fail closed on malformed source mappings or partial/extra project metadata. (#102)
- Screenplay.CritterStack (Release v0.20.0): Add explicit repository/workspace source policy and project-relative stable identities to the canonical host. (#29)
- Screenplay.CritterStack (Release v0.20.0): Add bounded compatibility evidence for referenced authored declarations, generated-source exclusion, safe roots, relocation, and deterministic ordering. (#29)
- Screenplay.CritterStack (Release v0.20.0): Pin all seven canonical output hashes and verify relocation stability. (#29)
- Components (Release v3.5.0): Published and regression-tested the Components 3 / PrimeReact 11 pass-through compatibility contract (#122)
- Components (Release v3.5.0): Added direct
DatePickerInputidentity, disabled, read-only, and button-bar controls (#154) - Components (Release v3.5.0): Added localizable column-filter labels and custom filter elements (#155)
- Components (Release v3.5.0): Added Cratis-owned filter match modes and source-compatible custom matcher registration (#164)
- Components (Release v3.5.0): Added a substitutable, cross-copy-safe toast dispatch contract (#165)
- Components (Release v3.5.0): Added pre-counted histogram buckets for server-aggregated numeric ranges (#132) (#171)
- Components (Release v3.5.0): Added Arc-compatible tamper-resistant CommandForm field/column markers while retaining legacy
displayNameinteroperability (#112) (#171) - Components (Release v3.5.0): Added an ESLint rule preventing hand-written raw CommandForm marker strings (#112) (#171)
- Components (Release v3.5.0): Added packed-consumer coverage for Arc 20, 21, and current 22.1
- Screenplay.Generation (Release v0.9.0): Add immutable source-path policies, project source contexts, and typed stable file identities with fail-closed path validation. (#21)
- Screenplay.Generation (Release v0.9.0): Add project-aware evidence APIs and deterministic canonical ordering for same-display files from different projects. (#21)
- Screenplay.CritterStack (Release v0.19.0): Admit exact current
DcbModeland legacyBoundaryModelworkflows with correlated sync, Task, or ValueTaskEventTagQuerycompanions. (#4) - Screenplay.CritterStack (Release v0.19.0): Retain ordered tag/event conditions and direct request source members as aggregate boundary reads. (#4)
- Screenplay.CritterStack (Release v0.19.0): Retain safe declarative state returns, explicit boundary appends, and persistence-wrapper payloads while preserving ordinary tuple siblings. (#4)
- Screenplay.CritterStack (Release v0.19.0): Report unlowerable DCB boundaries and unresolved bounded queries as
WOLVERINE0014andWOLVERINE0015. (#4) - Screenplay.CritterStack (Release v0.19.0): Add pinned current-package DCB canonical coverage and Generation 0.8.0 lockstep dependencies. (#4)
- Screenplay.Generation (Release v0.8.0): Add nullable typed
Unknown,Conflict, andUnsupportedoutcomes to generation diagnostics. (#5) - Screenplay.Generation (Release v0.8.0): Add
Unknown = -1sentinels to public fact discriminator enums without renumbering existing values. (#5) - Screenplay.Generation (Release v0.8.0): Validate artifact, placement, slice, relationship, evidence, concept representation, primitive, attribute, and validation-rule discriminators before resolution. (#5)
- Screenplay.CritterStack (Release v0.18.0): Retain current and legacy
Single/Conjoinedevent tenancy declarations asMARTEN0013. (#3) - Screenplay.CritterStack (Release v0.18.0): Retain exact per-document fluent tenancy, tenancy attributes, and global policy declarations without expanding their effects. (#3)
- Screenplay.CritterStack (Release v0.18.0): Add pinned canonical tenancy evidence while preserving generated source and artifact counts. (#3)
- Arc (Release v22.1.0): Exposed observable-query readiness through the TypeScript and React query-result APIs. (#2589)
- Arc (Release v22.1.0): Added runtime binding support for custom command-form fields rendered through opaque layouts. (#2582)
- Screenplay.CritterStack (Release v0.17.0): Retain independent same-model and different-model stream bindings, identities, reads, and appends. (#4)
- Screenplay.CritterStack (Release v0.17.0): Discover exact receiver-bound
AppendOneand safe directAppendManypayloads while reporting unresolved opaque writes asWOLVERINE0013. (#4) - Screenplay.CritterStack (Release v0.17.0): Retain commandless HTTP, metadata-only loaded streams, current and legacy stream APIs, and deterministic conventional-version ambiguity. (#4)
- Screenplay.CritterStack (Release v0.17.0): Exclude authored saga-state return slots before event, response, and cascade classification without inventing saga workflow facts. (#4)
- Screenplay.CritterStack (Release v0.17.0): Add pinned canonical two-stream evidence and relationship-count assertions. (#4)
- Screenplay.CritterStack (Release v0.16.0): Retain exact current Marten alias, naming-style, suffix, and schema-version declarations as
MARTEN0011. (#3) - Screenplay.CritterStack (Release v0.16.0): Retain typed, raw JSON, and recognized class-upcaster registrations as
MARTEN0012. (#3) - Screenplay.CritterStack (Release v0.16.0): Cover reduced and static extension syntax, current CLR/System.Text.Json/Json.NET upcaster bases, constants, and authored source locations. (#3)
- Screenplay.CritterStack (Release v0.16.0): Add pinned canonical alias/upcast evidence while preserving the generated Screenplay hash and sole domain event. (#3)
- cli (Release v2.15.0): Report Vogen package, assembly, and value-object capability provenance independently from the Cratis adapter package. (#87)
- cli (Release v2.15.0): Admit exact Vogen 8.0.7 canonical evidence and fail closed for missing, malformed, divergent, unreviewed, or unsupported versions. (#87)
- cli (Release v2.15.0): Generate authored Vogen concepts and Critter Stack artifacts together through the default CLI facade. (#87)
- cli (Release v2.15.0): Count
VOGdiagnostics as lowering loss while retaining independent support and semantic-conformance dimensions. (#87) - Screenplay.Generation (Release v0.7.1): Add a candidate-package current-source consumer covering authored trees, concepts, validation, exact subjects, conflicts, provenance, order independence, and compiler verification. (#5)
- Screenplay.Generation (Release v0.7.1): Define package lifecycle, support, deprecation, diagnostic stability, and host/adapter ownership policy. (#5)
- cli (Release v2.14.0): Add
--framework <TFM>for explicit multi-target project selection. (#87) - cli (Release v2.14.0): Report stable
CLI0015andCLI0016diagnostics before provider interpretation when target selection is ambiguous or unavailable. (#87) - cli (Release v2.13.1): Verify sentinel package metadata, repository provenance, content, and tool command settings. (#91)
- Screenplay.CritterStack (Release v0.15.0): Compose Vogen concepts by default only when exact authored Vogen evidence exists. (#25)
- Screenplay.CritterStack (Release v0.15.0): Add external adapter-list composition with one shared resolver/lowerer/printer/verifier pipeline. (#25)
- Screenplay.CritterStack (Release v0.15.0): Add a pinned Vogen 8.0.7 canonical fixture covering concepts, validation, nullable usage, loss diagnostics, and usage-driven identity. (#25)
- Screenplay.CritterStack (Release v0.14.0): Discover exact projection name/version and lifecycle metadata as explicit source-bound loss evidence. (#3)
- Screenplay.CritterStack (Release v0.14.0): Discover async daemon mode and statically resolvable subscription registration, filters, start positions, versions, and archived-event policy. (#3)
- Screenplay.CritterStack (Release v0.14.0): Support current and legacy event-store metadata names. (#3)
- Screenplay.Generation (Release v0.7.0): Map exact authored Vogen Validate(T) hooks to neutral named concept-validation rules. (#7)
- Screenplay.Generation (Release v0.7.0): Preserve a proven constant Validation.Invalid message and authored implementation file. (#7)
- Screenplay.Generation (Release v0.7.0): Report NormalizeInput and named Instance declarations as explicit non-representable evidence. (#7)
- Screenplay.CritterStack (Release v0.13.0): Validate Cratis.CritterStack.Screenplay against its public 0.1.0 baseline. (#7)
- Screenplay.CritterStack (Release v0.13.0): Add a clean package consumer for the generator API and dependency graph. (#7)
- Screenplay.Generation (Release v0.6.0): Validate Generation, Contracts, and DotNet packages against public 0.1.0 baselines. (#3)
- Screenplay.Generation (Release v0.6.0): Validate the Vogen package against its first public 0.2.0 baseline. (#3)
- Screenplay.Generation (Release v0.6.0): Add binary consumer verification that runs baseline-compiled consumers against current packages. (#3)
- AuthProxy (Release v2.21.0): Configurable OAuth authorization-request parameters for direct and Aspire provider registration, with framework-owned collision protection. (#106)
- Screenplay.CritterStack (Release v0.12.0): Discover exact Identity and Identities member selectors with one-to-one/one-to-many evidence. (#3)
- Screenplay.CritterStack (Release v0.12.0): Discover direct and IEvent
FanOut child selectors and grouping mode. (#3) - Screenplay.CritterStack (Release v0.12.0): Add canonical grouping/fan-out assertions. (#3)
- Screenplay.CritterStack (Release v0.11.0): Discover EventProjection Create/Transform document returns and exact Store/Insert/Update/Delete/DeleteWhere operations. (#3)
- Screenplay.CritterStack (Release v0.11.0): Preserve one-to-many event/document targets and exact event boundaries. (#3)
- Screenplay.CritterStack (Release v0.11.0): Retain teardown configuration as corroboration only. (#3)
- Screenplay.CritterStack (Release v0.10.0): Link exact compiled-query invocations to proven Wolverine HTTP/message entry points. (#3)
- Screenplay.CritterStack (Release v0.10.0): Preserve compiled-query parameters and exact read/return models. (#3)
- Screenplay.CritterStack (Release v0.10.0): Discover statically resolvable configured and inherited document identity members. (#3)
- Screenplay.CritterStack (Release v0.9.0): Discover exact FluentValidation/DataAnnotations activation and handler validation evidence. (#4)
- Screenplay.CritterStack (Release v0.9.0): Discover exact endpoint authorization attributes and statically resolvable global policies. (#4)
- Screenplay.CritterStack (Release v0.9.0): Report unresolved custom/runtime policy configuration without guessing. (#4)
- Screenplay.Generation (Release v0.5.0): Add authored-source Roslyn evidence helpers for external adapters. (#7)
- Screenplay.Generation (Release v0.5.0): Add Cratis.Screenplay.Generation.DotNet.Vogen with Vogen 8.0.7 semantic fixtures. (#7)
- Screenplay.Generation (Release v0.5.0): Recognize generic/non-generic Vogen declarations, assembly defaults, and supported primitive representations. (#7)
- Screenplay.Generation (Release v0.5.0): Document low-hassle multi-adapter composition through AdapterContribution. (#7)
- Screenplay.Generation (Release v0.4.0): Add neutral named concept validation facts, deterministic resolution, and Screenplay lowering. (#6)
- Screenplay.Generation (Release v0.4.0): Preserve messages and authored implementation files for external predicates. (#6)
- Screenplay.CritterStack (Release v0.8.0): Apply statically resolvable Wolverine conventional-discovery and explicit handler inclusion configuration. (#4)
- Screenplay.CritterStack (Release v0.8.0): Report unresolved runtime/custom discovery without guessing. (#4)
- Screenplay.CritterStack (Release v0.7.0): Discover single and tuple return cascades as automation relationships. (#4)
- Screenplay.CritterStack (Release v0.7.0): Discover immediate and delayed OutgoingMessages in persistence-free handlers. (#4)
- Screenplay.Generation (Release v0.3.0): Add concept attribute facts, deterministic resolution, provenance, and lowering. (#6)
- Screenplay.Generation (Release v0.3.0): Preserve optional attribute reasons in generated Screenplay. (#6)
- Screenplay.Generation (Release v0.2.0): Add neutral primitive and enumeration concept representation facts and resolved graph entries. (#6)
- Screenplay.Generation (Release v0.2.0): Lower concepts without module placement and bind artifact properties by exact semantic subject. (#6)
- Screenplay.Generation (Release v0.2.0): Add authored .NET type-shape overloads that retain exact source subjects. (#6)
- Screenplay.CritterStack (Release v0.6.0): Discover pure direct-bus handlers as reactions with message triggers and publish relationships. (#4)
- Screenplay.CritterStack (Release v0.6.0): Preserve the current reaction lowering gap as an explicit diagnostic. (#4)
- Screenplay.CritterStack (Release v0.5.0): Discover direct send, publish, request/reply, scheduling, delivery-option scheduling, and topic-broadcast consequences. (#4)
- Screenplay.CritterStack (Release v0.5.0): Report direct delivery semantics that the current Screenplay language cannot preserve. (#4)
- Screenplay.CritterStack (Release v0.4.0): Record ordinary handler returns as cascades when direct event-stream appends establish persistence. (#4)
- Prompter (Release v0.2.1): A check requiring exactly one
major,minororpatchlabel before a pull request can be merged. - Synopsis (Release v1.1.1): A check requiring exactly one
major,minororpatchlabel before a pull request can be merged. - cli (Release v2.12.0): Report resolved source-package provenance and explicit compatibility dimensions for Screenplay generation. (#87)
- cli (Release v2.12.0): Fail closed for unknown or unsupported Marten and Wolverine generations. (#87)
- Screenplay.CritterStack (Release v0.3.0): Generic, instance-based, snapshot, and live Marten projection registration discovery with explicit async/live lifecycle diagnostics. (#3)
- Screenplay.CritterStack (Release v0.3.0): Pinned MartenWithProjectAspire verification for single-stream, multi-stream, and event projections. (#3)
- Screenplay.CritterStack (Release v0.3.0): A compatibility reference with exact canonical package sets, support tiers, and version-provenance guidance. (#17)
- Screenplay.CritterStack (Release v0.3.0): Evidence-based classification guidance for State Change, State View, Automation, and Translation patterns. (#3, #4)
- cli (Release v2.11.0): Add
--provider auto|arc|marten|critter-stackwith conservative source-framework detection. - cli (Release v2.11.0): Generate verified Screenplay definitions from Marten and Critter Stack projects through the new official adapter package.
- cli (Release v2.11.0): Add a real package compatibility spec and end-to-end validation for Arc, BankAccountES, and canonical IncidentService source.
- Screenplay.CritterStack (Release v0.2.0): Discover document shapes from Marten registration, Store, Insert, Update, Delete, Load, and Query source usage. (#3)
- Screenplay.CritterStack (Release v0.2.0): Record handler-to-document Store, Update, Delete, and Read relationships with source provenance. (#3)
- Screenplay.CritterStack (Release v0.2.0): Report the missing ordinary document-state Screenplay construct through
MARTEN0003. (#3) - Screenplay.CritterStack (Release v0.2.0): Verify document CRUD and
IMartenOpdocument storage against pinned CqrsMinimalApi and Reports samples. (#3) - Stage (Release v3.8.0): The session’s Chronicle Workbench is served at
/workbench, on the model’s own port. The bundled kernel serves one already, but on a port a play session does not publish — so there was no way to look at the events a model produced. It follows a path-prefixed reverse proxy: the page is told where it is really being served from, and Arc’s client takes that as its API base path for every command, query, SSE and WebSocket URL - Screenplay.CritterStack (Release v0.1.0): Generate markerless Marten events, aggregate snapshots, read models, reducers, commands, and queries from source.
- Screenplay.CritterStack (Release v0.1.0): Interpret Wolverine HTTP endpoints, aggregate workflows, response wrappers, direct event/document operations, and outgoing messages.
- Screenplay.CritterStack (Release v0.1.0): Expose a complete
CritterStackScreenplayGeneratorfaçade plus stable Marten/Wolverine diagnostics. - Screenplay.CritterStack (Release v0.1.0): Cover current and legacy Critter Stack conventions with synthetic fixtures and real BankAccountES, IncidentService, and CritterStackHelpDesk smoke validation.
- Screenplay.Generation (Release v0.1.0): Add framework-neutral semantic fact, evidence, provenance, and diagnostic contracts.
- Screenplay.Generation (Release v0.1.0): Add deterministic conflict resolution, Screenplay lowering, canonical printing, and round-trip verification.
- Screenplay.Generation (Release v0.1.0): Add a reusable Roslyn SDK for project-qualified symbols, source provenance, generated-source detection, and type shapes.
- Screenplay.Generation (Release v0.1.0): Add independently packable Contracts, Generation, and Generation.DotNet NuGet packages.
- Chronicle (Release v16.37.0):
Cratis:Chronicle:Authentication:Enabledturns authentication off entirely — no token authority, no identity endpoints, no bootstrap admin user, and every gRPC service and HTTP endpoint answers anonymously. For a Chronicle embedded in one container or process with its own client over loopback, where the credential exchange protects nothing and costs every client seconds of cold start. Anywhere a network can reach the server, leaving it off publishes the whole event store (#3791) - Chronicle (Release v16.37.0):
auth=nonein a connection string, andWithoutAuthentication()on the builder, connect without presenting credentials. Omitting credentials still means client credentials with the development pair, as it always has —auth=noneis the explicit form and overrides anything else the connection string carries (#3791) - cli (Release v2.10.0):
cratis init --no-contextwrites the skill and prompt files but leaves the tool’s instruction file alone, for repositories that generateAGENTS.md,CLAUDE.mdor.github/copilot-instructions.mdfrom a shared corpus and propagate them. Appending to such a file is undone by the next sync — the reference disappears at an unpredictable later moment, which is harder to notice than never adding it. The skip is reported and names what to add instead, so the catalog does not end up on disk with nothing pointing at it. (#81) - cli (Release v2.9.0):
cratis initnow configures Pi, writing the Chronicle skill to.pi/skills/chronicle-cli/SKILL.md, the diagnose prompt to.pi/prompts/, and the@CHRONICLE.mdreference toAGENTS.md. Pi is detected from a project’s.pi/directory and from thePI_*variables it exports, so runningcratis initinside a Pi session configures it even on a project that has nothing yet.--tool pitargets it explicitly. (#79) - Screenplay (Release v4.2.0): A
filereference in a.playdocument is now a link — cmd-click opens the file it names (#120) - Screenplay (Release v4.2.0):
screenplay.sourceRootsetting, to say what a repo-relative path in a document is resolved against (#120) - Screenplay (Release v4.2.0): A
filereference that could mean more than one file is left unlinked, with a tooltip naming every candidate — and is never resolved from a search that may have been cut short (#120) - Screenplay (Release v4.2.0): A
filereference whose name contains*,?,[,],{or}resolves to the file literally named that, so route files such as[id].tsxare linked (#120) - Screenplay (Release v4.2.0): Links are re-resolved when a file appears or disappears outside the editor, such as from a
git checkoutor a run of the generator (#120) - Screenplay (Release v4.1.0):
file <path>onconcept,type,event,readmodel,projection,slice,specificationand the top-leveltrigger, naming the repository relative file the declaration is realized by. #120 - Screenplay (Release v4.1.0):
PLAY0264warns when afilepath is absolute rather than repository relative. - Screenplay (Release v4.1.0):
fileoffered as a completion in the declaration bodies that accept it. - Screenplay (Release v4.1.0): A file references page covering what the keyword means on each construct and the rules a path follows.
- Chronicle (Release v16.36.0):
CannotWaitForObserverCompletionnames the case where completion cannot be established - Stage (Release v3.3.1): A check requiring exactly one
major,minororpatchlabel before a pull request can be merged. - Chronicle (Release v16.35.4): Every published Docker image variant (production, development, development-slim, workbench) is booted the way a consumer runs it before being pushed — the container must start, stay up, and listen on its port, or the publish fails with the container logs (#3446)
- Stage (Release v3.3.0): A
uniqueconstraint a slice declares is now rendered as a Chronicle[Unique]attribute on the event it names, so a rendered application actually enforces the uniqueness the document states (#13) - cli (Release v2.8.2):
--debugnow prints the resolved event store and namespace together with the source each value came from (option, context, or built-in default) (#75)
Changed
Section titled “Changed”- Chronicle (Release v16.38.0): CHR0037 now also validates migrations that use
EventTypeGenerationFor<T>(checking it points at the migration’s own upgrade type), instead of silently no longer checking anything the moment a migration doesn’t use the older explicit-id style (#3815) - Chronicle (Release v16.38.0): An
EventTypeMigration<TUpgrade, TPrevious>whose two generations resolve to different event type ids now throws at startup instead of registering successfully and failing later, or silently registering an incorrect schema. Any application already relying on the old mismatched-id pattern was already non-functional against a production Chronicle kernel; this surfaces that failure immediately and clearly instead of downstream asEventTypeSchemaChanged(#3816) - Screenplay.CritterStack (Release v0.21.0): Keep saga state distinct from events, messages, cascades, HTTP read models, document operations, DCB payloads, and side effects. (#50)
- Screenplay.CritterStack (Release v0.21.0): Report unsupported or runtime-only saga roles and correlation with stable located diagnostics instead of inventing semantics. (#50)
- cli (Release v2.16.0): Update all four Generation packages to 0.9.0 while retaining Arc 22.1.0, Critter Stack 0.19.0, and no target Vogen runtime. (#102)
- Screenplay.CritterStack (Release v0.20.0): Update all four Generation packages to 0.9.0 and migrate Marten/Wolverine evidence to project-aware source APIs. (#29)
- Screenplay.CritterStack (Release v0.20.0): Exercise stable source identity and legacy fallback in the clean package consumer. (#29)
- Stage (Release v3.8.2): Document Stage runtime, specification-runner, rendering responsibilities,
.playinput, current limitations, and deferred frontend rendering. (#19) - Components (Release v3.5.0): Expanded the supported Arc peer range through Arc 22 and verified Arc 22.1 explicitly (#166)
- Components (Release v3.5.0): Documented complete-result filtering as a server-side query responsibility (#159)
- Components (Release v3.5.0): Made Components 3 Storybook discovery and Vite configuration clean under the current toolchain (#171)
- Components (Release v3.5.0): Run JavaScript and Storybook gates when workflow or package-build inputs change
- Screenplay.Generation (Release v0.9.0): Use explicit source identity in Vogen evidence when a host supplies it, without adding a Vogen runtime dependency or changing display paths. (#21)
- Screenplay.Generation (Release v0.9.0): Validate public package compatibility against the released 0.8.0 baseline. (#21)
- cli (Release v2.15.2): Update all four Screenplay Generation packages to 0.8.0 and Critter Stack Screenplay to 0.19.0. (#87)
- cli (Release v2.15.2): Preserve newly visible unsupported Aggregate roles as explicit
GEN0004lowering loss instead of expecting silent omission. (#87) - cli (Release v2.15.2): Report the actual Arc 22.1.0 and Critter Stack 0.19.0 provider versions in assembly metadata and package sentinels. (#87)
- Stage (Release v3.8.1): Updated the bundled Chronicle kernel and client packages to 16.37.2, which starts noticeably faster than the 16.37.0 kernel the image shipped before
- Chronicle (Release v16.37.2): The
-developmentcontainer image is now built with optimizations enabled, making kernel startup measurably faster for everything based on it (#3813) - Screenplay.Generation (Release v0.8.0): Advance package compatibility validation to the published 0.7.1 baseline while retaining legacy 0.1/0.5 binary consumers. (#5)
- cli (Release v2.15.1): Update the bundled Critter Stack Screenplay adapter to 0.17.0 for receiver-targeted current/legacy event streams and Marten event schema evidence. (#87)
- cli (Release v2.15.1): Keep Arc 22.0.0 and all four Generation packages at 0.7.1. (#87)
- cli (Release v2.15.0): Update bundled packages to Screenplay Generation 0.7.1 and Critter Stack 0.15.0. (#87)
- cli (Release v2.15.0): Document Vogen provenance, generated-source authority, and support boundaries. (#87)
- Screenplay.Generation (Release v0.7.1): Advance all package-validation baselines to the published 0.7.0 compatibility floor while retaining 0.1.0/0.5.0 legacy binary smoke. (#5)
- Screenplay.Generation (Release v0.7.1): Refresh implementation status through Generation 0.7, Critter Stack 0.15, and CLI 2.14. (#5)
- cli (Release v2.14.0): Preserve single-target dependency projects while selecting the requested variant from each multi-target application project. (#87)
- cli (Release v2.14.0): Document target-framework selection, provenance boundaries, and validation behavior. (#87)
- cli (Release v2.13.0): Take Screenplay Generation 0.6.0 and Critter Stack Screenplay 0.13.0. (Cratis/cli#87)
- cli (Release v2.13.0): Preserve authored syntax-tree provenance required by current source adapters. (Cratis/cli#87)
- cli (Release v2.13.0): Report exact canonical package sets with the current bundled provider. (Cratis/cli#87)
- Screenplay.CritterStack (Release v0.13.1): Build and validate the Critter Stack adapter against Screenplay Generation 0.6.0.
- Screenplay.CritterStack (Release v0.13.1): Keep the public 0.1.0 Critter Stack package compatibility baseline unchanged.
- Screenplay.CritterStack (Release v0.13.0): Update Generation, Contracts, and DotNet dependencies to 0.5.0. (#7)
- Screenplay.CritterStack (Release v0.13.0): Remove obsolete GitHub release package bootstrap now NuGet trusted publishing is available. (#7)
- Screenplay.Generation (Release v0.6.0): Preserve compatible additive API evolution while rejecting removals and signature breaks. (#3)
- AuthProxy (Release v2.21.0): Canonical OAuth sessions now require reauthentication when configured or effective authorization parameters change. (#106)
- AuthProxy (Release v2.21.0): Repository AI quality gates now target AuthProxy and use the canonical prompt and agent corpus.
- Prompter (Release v0.2.1): Releases are cut on push to
maininstead of on the pull request closing, so contributions from forks publish like any other. - Prompter (Release v0.2.1): The Publish run now fails when a merge releases nothing because the version label was missing, instead of reporting success.
- Synopsis (Release v1.1.1): Releases are cut on push to
maininstead of on the pull request closing, so contributions from forks publish like any other. - Synopsis (Release v1.1.1): The Publish run now fails when a merge releases nothing because the version label was missing, instead of reporting success.
- cli (Release v2.12.0): Emit one deterministic machine-readable provenance and diagnostics payload on standard error. (#87)
- cli (Release v2.11.0): Align Arc Screenplay, Screenplay, Stage, and Prologue packages on the current Screenplay 4 generation.
- cli (Release v2.11.0): Retain markerless non-spec projects for Critter Stack analysis while preserving Arc-specific project filtering.
- cli (Release v2.10.2): Default destructive confirmation prompts to No and require
--yesin noninteractive environments. - cli (Release v2.10.2): Honor
CRATIS_NONINTERACTIVEand recognized agent hosts without treating ordinary VS Code terminals as agent processes. - Stage (Release v3.8.0): A play session’s Chronicle runs with authentication turned off. It is embedded in the container with its only client, reached over loopback, and thrown away with the container — the credential exchange protected nothing and cost 1.9s of cold start unconstrained, 3.7s under the CPU limit a session runs on. It also means nobody has to sign in to look at a disposable sandbox’s Workbench
- Stage (Release v3.8.0): Chronicle pinned to 16.37.0 and Arc to 21.19.4, and the bundled kernel image tracks the Chronicle pin as it must
- Arc (Release v22.0.0): Generate Screenplay
reactiondeclarations and named trigger sources instead of the removed reactor syntax. (#2558) - Arc (Release v22.0.0): Require
Cratis.Screenplay4.2.1 and verify generated documents across single- and multi-project Arc applications. (#2558) - cli (Release v2.9.0):
cratis initnow reports whenCHRONICLE.mdwas generated by a different version of the CLI, and namescratis init --refreshas the fix. The embedded command catalog is a snapshot rather than a live lookup, so after an upgrade it kept describing the surface it was generated from — commands added since were invisible to an agent, and ones renamed or removed were still advertised, with nothing saying so. (#79) - cli (Release v2.9.0):
cratis init --refreshnow also updates the Pi skill, alongside the Claude and Copilot ones. (#79) - Stage (Release v3.7.0): The Host honors the standard
X-Forwarded-Host,X-Forwarded-ProtoandX-Forwarded-Prefixheaders, so a play session reached through a path-prefixed reverse proxy (for examplehttps://<studio>/api/play/<session>/…) reports its public address in the OpenAPI document’sserversentry and in Scalar’s “Try it” requests rather than the internal service name. - Stage (Release v3.7.0): Scalar resolves its base server URL from the page’s own origin and path base.
- Stage (Release v3.7.0): Cratis/Arc packages updated to 21.19.3; Chronicle client packages to 16.36.2; Screenplay to 4.2.1.
- Arc (Release v21.19.3):
serializeArgsForDependencymoved out ofuseObservableQueryinto its own module so every query hook derives its argument dependency the same way (#2584) - Screenplay (Release v4.2.1):
ValidationIssuecarries an optionalcode. The structural checks the capture and projection validators make have no compiler counterpart and deliberately carry none - documented in diagnostics.md, under In the editor. - Prologue (Release v2.0.0): The Prologue packages now build against Cratis.Screenplay 4.2.0, up from 2.1.0.
Cratis.Prologue.Screenplayexposes Screenplay types on its public surface, so taking this release takes Screenplay 4.x with it. - Stage (Release v3.6.0): A query now renders as a method on the read model its return type names. A query returning a read model the file does not render is no longer rendered against the read model that is there — it gets no method, and is reported by name (#13)
- Stage (Release v3.6.0): A query is reported as missing its narrowing only when it has a rendered method to be narrowed (#13)
- Screenplay (Release v4.1.0):
ScreenplaySyntaxWalker.VisitFileReferencereaches every file a document names, whichever construct named it. - Screenplay (Release v4.1.0): Syntax nodes grow by init-only property rather than by a trailing optional record parameter, which is a binary break. Set
Filewith an object initializer or awithexpression. - Stage (Release v3.5.0): A query declared
observablenow renders as a live query returningISubject<...>, instead of silently rendering as a one-shot read (#13) - Stage (Release v3.4.0): A read model now exposes the queries the document declares, named after them, instead of a fixed
All/ByIdpair that appeared whatever the document said (#13) - Stage (Release v3.4.0): A query is reported as unrendered only when it states narrowing that rendering cannot give it — a filter, or a performer holding the body (#13)
- Chronicle (Release v16.36.0): Waiting for observer completion on an append that carries no observer surface now fails by name instead of reporting success, so an in-process spec can no longer assert that downstream work finished when none of it was started
- Stage (Release v3.3.1): Releases are cut on push to
maininstead of on the pull request closing, so contributions from forks publish like any other. - Stage (Release v3.3.1): The Publish run now fails when a merge releases nothing because the version label was missing, instead of reporting success.
- Arc (Release v21.19.1): Cratis.Chronicle updated from 16.26.0 to 16.35.3, bringing the transitive Cratis.Metrics.Roslyn and Microsoft.Extensions versions it requires along with it
- Stage (Release v3.3.0): Only the constraints with no rendered form are reported as unrendered — one backed by a file, or one naming an event or property the slice does not declare (#13)
- Stage (Release v3.2.1): Bumped
Cratis,Cratis.Arc*,Cratis.Chronicle*, andCratis.Screenplaypackage references to their current latest versions. - Chronicle (Release v16.35.0): Projections a client no longer registers are retired when the client registers its full set: the observer is unsubscribed in every namespace, jobs and failed partitions are cleared, and the definition is removed from the engine and storage. The sink container is never dropped (#3725)
- Chronicle (Release v16.35.0): When a retired projection wrote to the same container as another registered projection - a renamed read model keeps its container name - a replay recommendation is raised for the successor so the container can be rebuilt cleanly (#3725)
- Chronicle (Release v16.35.0): Partial projection registrations (such as saving a single projection from the Workbench) never retire anything, and the client SDK only declares a full set when every discovered artifact produced a definition (#3725)
- Chronicle (Release v16.38.1): Chronicle now continues starting when persisted client projection definitions are stale, allowing clients to reconnect and register their current definitions without losing observer progress.
- Chronicle (Release v16.38.0): Fixed event type registration sending an empty placeholder schema for a generation instead of its real schema, non-deterministically, depending on dictionary enumeration order - independent of whether the generations’ ids matched (#3816)
- Stage (Release v3.8.2): Render exact role alternatives per generated query method and block conjunctions, claims, code, missing, or mixed policies that cannot be preserved. (#20)
- Stage (Release v3.8.2): Propagate typed rendering failure, suppress false completion, and leave a non-overwriting advisory marker for unsafe direct-write targets. (#20)
- Stage (Release v3.8.2): Deny Stage query authorization and anonymous access until declared query policies can be carried and executed, preventing performer execution or data exposure. (#30)
- Components (Release v3.5.0): Added regression and browser coverage for
DataPagedefault filters without reproducing the reported empty-table failure (#149) - Components (Release v3.5.0): Aligned
DatePickerInputpass-through typing with the live input slot (#150) - Components (Release v3.5.0): Prevented
DatePickerInputvalidation state from leaking to the DOM (#151) - Components (Release v3.5.0): Routed Dropdown identity and accessibility props to the focusable combobox (#152)
- Components (Release v3.5.0): Kept Dropdown trigger and filter placeholders independent (#153)
- Components (Release v3.5.0): Preserved dismiss controls for custom toast bodies and exposed toaster pass-through configuration (#156)
- Components (Release v3.5.0): Derived paginator accessibility labels from the active locale (#157)
- Components (Release v3.5.0): Hid decorative dialog footer icons from accessibility APIs (#158)
- Components (Release v3.5.0): Suppressed query empty states until the first result is available (#160)
- Components (Release v3.5.0): Restored publication for labeled pull requests merged to
main(#172) - Screenplay (Release v4.2.2): A validation rule’s
filereference and inline code block are no longer written for rule kinds the compiler cannot read them back on. A syntax tree carrying one on, say, anot emptyrule used to print a document that failed to compile withPLAY0141; the omission is now stated in a comment on the line it would have occupied, and the printed document compiles. (#123) - Screenplay (Release v4.2.2): A
handler, aperformerand arule <Name>predicate that carry both afilereference and an inline code block now print only the file reference - the one the compiler reads back - and name the omitted block in a comment, instead of writing both and failing to compile withPLAY0034,PLAY0048orPLAY0141. (#123) - Stage (Release v3.8.1): The Chronicle base image tag and the client package pins are back on the same version — the base image had drifted to 16.37.0-development while the client packages were on 16.37.1
- Screenplay.CritterStack (Release v0.19.0): Reject unrelated, missing, generated, mismatched, or no-request companion methods instead of borrowing another workflow’s query evidence. (#4)
- Screenplay.CritterStack (Release v0.19.0): Keep tag types, state, query objects, wrappers, responses, side effects, and boundary ordinary returns out of persisted events. (#4)
- Screenplay.CritterStack (Release v0.19.0): Avoid synthetic reducers, read models, projections, stream appends, starts, or reads-to-historical-event topology. (#4)
- Screenplay.Generation (Release v0.8.0): Omit only malformed semantic units while preserving source, subject, unrelated valid output, and deterministic order. (#5)
- Screenplay.Generation (Release v0.8.0): Keep unknown slice kinds from becoming state changes and keep unsupported unplaced artifacts or relationships from disappearing silently. (#5)
- Screenplay.Generation (Release v0.8.0): Preserve conflict variants and source evidence in typed diagnostics. (#5)
- Screenplay.CritterStack (Release v0.18.0): Keep computed, cast, default, compound, invalid, stale, and generic unresolved tenancy expressions fail-closed. (#3)
- Screenplay.CritterStack (Release v0.18.0): Prevent attributes, policies, callbacks, and configuration-only types from originating documents, tenant-specific artifacts, relationships, or topology. (#3)
- Arc (Release v22.1.0): Prevented subscription teardown from being logged as an emission-guard security failure or sending late stream messages. (#2588)
- Arc (Release v22.1.0): Re-sent active SSE subscriptions when a connection ID changes while a subscribe request is in flight. (#2597)
- Arc (Release v22.1.0): Bound nested CommandForm fields while preserving custom layouts, columns, population metadata, and validation behavior. (#2582)
- Screenplay.CritterStack (Release v0.17.0): Prevent first-stream event and identity leakage across multiple targets. (#4)
- Screenplay.CritterStack (Release v0.17.0): Prevent generated source and unrelated same-named identity/stream APIs from originating semantics. (#4)
- Screenplay.CritterStack (Release v0.17.0): Preserve ordinary HTTP responses, cascades, side effects, messages, and unmarked-stream boundaries separately from persisted events. (#4)
- Screenplay.CritterStack (Release v0.16.0): Fail closed for computed values, mixed inline registrations, generated source, unrelated APIs, arbitrary upcasters, and unverified legacy EventGraph mapping. (#3)
- Screenplay.CritterStack (Release v0.16.0): Keep configuration-only types from originating events, artifacts, or behavioral relationships. (#3)
- cli (Release v2.15.0): Detect split-project Critter Stack applications across the complete application scope instead of requiring Marten and Wolverine in one compilation. (#87)
- cli (Release v2.13.1): Publish the CLI tool with its MIT license and a user-facing package description. (#91)
- Screenplay.CritterStack (Release v0.15.0): Bind artifact type references to exact concept subjects without identity-by-name or Guid inference. (#25)
- Screenplay.CritterStack (Release v0.15.0): Keep existing non-Vogen canonical outputs byte-stable. (#25)
- Screenplay.CritterStack (Release v0.14.0): Keep raw custom projection/subscription processing from fabricating State View, Automation, Translation, document, message, or event consequences. (#3)
- Screenplay.CritterStack (Release v0.14.0): Keep projection metadata distinct from daemon hosting configuration. (#3)
- Screenplay.Generation (Release v0.7.0): Exclude wrong signatures, generated methods, nested/local returns, multiple invalid branches, and lookalike hooks without guessing validation semantics. (#7)
- Screenplay.Generation (Release v0.6.1): Validate the Vogen package against first correctly sourced listed version 0.5.0 instead of mispublished historical 0.2.0. (#13)
- Screenplay.Generation (Release v0.6.1): Compile and run the binary Vogen consumer against 0.5.0. (#13)
- Screenplay.Generation (Release v0.6.1): Document the unlisting remediation and baseline boundary. (#13)
- Screenplay.CritterStack (Release v0.12.0): Fail closed for computed/conditional selectors, custom groupers/slicers, and tenancy-dependent grouping. (#3)
- Screenplay.CritterStack (Release v0.12.0): Keep fan-out child evidence as projection consumption rather than persisted Produces relationships. (#3)
- Screenplay.CritterStack (Release v0.11.0): Keep EventProjection document returns out of persisted event facts. (#3)
- Screenplay.CritterStack (Release v0.11.0): Diagnose arbitrary body/value/predicate flow instead of inferring mappings. (#3)
- Screenplay.CritterStack (Release v0.10.0): Bind the exact query interface selected by each invocation. (#3)
- Screenplay.CritterStack (Release v0.10.0): Exclude unproven nested lambda/local-function query calls and diagnose unresolved flow. (#3)
- Screenplay.CritterStack (Release v0.10.0): Keep shadowed or ambiguous identity members unmarked. (#3)
- Screenplay.CritterStack (Release v0.9.0): Keep package presence, unrelated IHttpPolicy implementations, and unrelated ConfigureEndpoints calls from fabricating validation or authorization. (#4)
- Chronicle (Release v16.37.1): Prevented
[Passive]read models with fluent projections from registering empty duplicate model-bound projections. (#3757) - Chronicle (Release v16.37.1): Added post-push Docker Hub verification for every Chronicle image variant so incomplete releases fail visibly. (#3770)
- Chronicle (Release v16.37.1): Prevented root-level join events from applying blind MongoDB updates to unrelated read-model documents. (#3784)
- Chronicle (Release v16.37.1): Configured ASP.NET Data Protection and certificate-rotation diagnostics to use the same shared grain-backed key repository. Upgrading invalidates existing authentication cookies and outstanding Identity/OpenIddict tokens once; users and clients must sign in again, while durable Chronicle secrets remain unaffected. (#3803)
- Screenplay.Generation (Release v0.5.0): Exclude generated-only/lookalike declarations and unsupported backing types without String or identity inference. (#7)
- Screenplay.Generation (Release v0.4.0): Reject conflicting, mismatched, invalid, or newline-bearing rules without dropping concepts. (#6)
- Screenplay.CritterStack (Release v0.8.0): Keep disabled, ignored, generated, generic, abstract, middleware, and inactive methods from becoming handlers. (#4)
- Arc (Release v22.0.2): Prevented SSE subscriptions from reading disposed request contexts when clients disconnect mid-subscribe. (#2568)
- Arc (Release v22.0.2): Prevented React observable-query hooks from deserializing already converted models a second time. (#2567)
- Arc (Release v22.0.2): Restored AI corpus validation by removing obsolete prompt stubs and refreshing canonical rule guidance.
- Screenplay.CritterStack (Release v0.7.0): Keep response, side-effect, persistence-wrapper, document-operation, ignored, and inactive methods from becoming automations or persisted events. (#4)
- Screenplay.CritterStack (Release v0.7.0): Add canonical negative assertions for command/event fabrication. (#4)
- Screenplay.Generation (Release v0.3.0): Diagnose conflicting or invalid attributes without dropping the underlying concept. (#6)
- Screenplay.Generation (Release v0.2.0): Diagnose missing, invalid, conflicting, malformed, or same-named concepts without falling back to String. (#6)
- Screenplay.Generation (Release v0.2.0): Omit artifacts whose exact concept references cannot be emitted. (#6)
- Screenplay.CritterStack (Release v0.6.0): Avoid inventing commands or persisted events for message-only automations. (#4)
- Screenplay.CritterStack (Release v0.5.0): Ignore unrelated methods that merely share Wolverine bus method names. (#4)
- Screenplay.CritterStack (Release v0.4.0): Recognize current Wolverine handler, return, response, ignore, and event-stream metadata names. (#4)
- Screenplay.CritterStack (Release v0.4.0): Keep HTTP responses, persisted events, persistence wrappers, cascades, outgoing messages, and side effects distinct. (#4)
- Screenplay.CritterStack (Release v0.4.0): Exclude ignored, open-generic, and abstract handlers from conventional activation. (#4)
- Arc (Release v22.0.1): Model-bound queries now keep enum arguments in generated proxies and bind them from callers instead of attempting dependency resolution (#2595)
- cli (Release v2.10.2): Validate destructive confirmation before connecting to Chronicle or loading connection credentials.
- cli (Release v2.10.2): Keep declined and missing-confirmation output machine-readable across JSON and quiet JSON formats.
- Screenplay.CritterStack (Release v0.2.0): Name methods in plural Wolverine endpoint containers distinctly and exclude
[Entity]parameters from request-command inference. (#3) - Stage (Release v3.8.0): The wait for the bundled kernel no longer rounds up to the next two-second tick — it threw away 2.06s of a 14.9s start at half a core, and 1.18s of 8s on a fast machine
- Chronicle (Release v16.37.0): Connecting a client no longer waits a full keep-alive interval. The server withheld its first heartbeat for
KeepAliveIntervalSecondswhile the client waits on exactly that heartbeat to consider itself connected, so every connect everywhere cost the interval — a flat second by default, unaffected by how much CPU the machine had, because it was a delay rather than work (#3790) - Chronicle (Release v16.37.0): The “started successfully - ready and listening” message is logged once Kestrel has bound the port, rather than roughly half a second before it. Entrypoint scripts, test fixtures and orchestrators that gate on that line were connecting to a socket that did not exist yet (#3792)
- Chronicle (Release v16.37.0): The Workbench works when served under a path prefix. It already learns its prefix from the
base-pathmeta tag and hands it to Arc, but its auth probe, login, logout and post-login redirect asked for root-absolute paths regardless — so under a prefix the probe hit whatever else was at the root and the Workbench sent the user to a/loginthat was not there - Arc (Release v21.19.4): Applications with many commands and queries now start in a fraction of the time — Arc mapped its generated endpoints in O(n²), rebuilding the entire ASP.NET endpoint table before every single registration. A model-driven host registering ~480 endpoints spent 54 seconds in
UseCratisArc()on an idle 14-core machine; it is now unmeasurable. Every Arc application pays this on startup, in proportion to how many commands and queries it has (#2591) - cli (Release v2.10.1): Chronicle diagnostics now discovers event stores instead of reporting
none foundagainst current servers. - cli (Release v2.10.1): Event store, namespace, job, user, and application commands now work with Chronicle 16.36.3.
- Chronicle (Release v16.36.3): Jobs, users, and applications can be read through generated gRPC clients without timestamp serialization failures. (#3788)
- Stage (Release v3.7.0): The
cratis/stageimage no longer crashes at boot withTypeLoadException: Could not load type 'Cratis.Chronicle.Contracts.EnsureEventStore'. The Chronicle client (Cratis.Chronicle,Cratis.Chronicle.AspNetCore) is now referenced directly by the Stage library and the Host, so the version pinned inDirectory.Packages.propsis the one that ships - it previously arrived transitively through theCratismeta-package at whatever version that package was built against, which is how 3.6.0 shippedCratis.Chronicle16.26.0 besideCratis.Chronicle.Contracts16.36.2. - Stage (Release v3.7.0): The
cratis/stageimage’s bundled Chronicle kernel is pinned to the same version as the client (cratis/chronicle:16.36.2-development) instead of floating onlatest-development, so the two cannot drift apart between releases. - Arc (Release v21.19.3):
useQueryanduseQueryWithPagingno longer re-subscribe on every render when a query argument is an object such as aGuid, aDateOnly, or a generated concept — arguments are compared by serialized value instead of by reference identity (#2584) - Screenplay (Release v4.2.1): The editor reports the compiler’s
PLAYcode for every condition it checks, so the same problem carries the same code whether it was found by the CLI or by a squiggle - lookup, suppression and log matching all work from one catalogue. A Monaco marker gets it ascode, a VS Code diagnostic asDiagnostic.code, anddiagnosticCodesnames them for a consumer. (#86) - Screenplay (Release v4.2.1): A query whose return type is dotted is scanned as a query again. The editor matched
[\w[\]?]+where the compiler takes[\w.]+(?:\[\])?\??, so such a query registered no symbol at all - itsbyandfilterparameters went un-type-checked and it was missing fromdata … via querycompletions, with nothing reported. (#86) - Chronicle (Release v16.36.2): Publishing several merges at once no longer loses releases to a race on the next version number: runs queue behind each other instead of computing the same version in parallel
- Arc (Release v21.19.2): The MongoDB
Observe,ObserveSingleandObserveByIdextensions no longer document an “Async Task” return they do not have; they returnISubject<...>directly (#2569) - Arc (Release v21.19.2):
ObserveSingleis now documented as returning a single instance instead of a collection (#2569) - Arc (Release v21.19.2): The
<returns>docs now reference the returnedISubject{T}rather than the concreteSubject{T}(#2569) - Screenplay (Release v4.1.0): The syntax tree compatibility page said appending an optional record parameter keeps consumers working. It is source compatible and binary breaking, so the page now states the hazard and prescribes the init property.
- Chronicle (Release v16.36.1): Production Docker images publish again — none were published for
16.35.4through16.36.0, and thelatesttag stayed on16.35.3(#3770) - Chronicle (Release v16.36.1): Job state now round-trips correctly on SQL storage backends (SQLite, PostgreSQL and MSSQL) — a job’s request payload was lost when its state was written and reading it back failed, leaving projection retirement silently incomplete. MongoDB was unaffected
- Chronicle (Release v16.35.8): The image boot gate no longer fails every production publish: it now supplies the TLS and token-encryption certificates the production image requires, instead of starting it in a configuration it deliberately refuses
- Chronicle (Release v16.35.6): Asking a MongoDB-backed event sequence for the next sequence number at or after a position now answers with the nearest qualifying event instead of the furthest, matching the SQL and in-memory implementations (#3743)
- Stage (Release v3.2.2): The solution builds again — an automated package update left it failing restore with
NU1603 - Chronicle (Release v16.35.3): Changing a password from the Workbench (including the forced change at login) failed with “Current password is required.” because the current password was no longer sent to the kernel
- Chronicle (Release v16.35.3): Adding an application with a client id that is already registered is rejected with a clear message instead of creating a second application with the same client id
- Chronicle (Release v16.35.3): The Workbench’s event store and namespace lists were empty on the in-memory storage backend because the observed names failed to serialize
- Stage (Release v3.2.1): Fixed a
TypeLoadExceptionat host startup (AddCratisArcCore()) when Stage is used against Chronicle 16.34.0 or newer. Chronicle renamed theEnsureEventStorecontract toEnsureEventStoreRequestand moved it into theCratis.Chronicle.Contracts.EventStoresnamespace; Stage was still built against the pre-rename contract, so its own compiled self-binding metadata referenced a type that no longer exists in current Chronicle packages. - Chronicle (Release v16.35.2): Listing failed partitions across observers no longer crashes with a duplicate-key error when two observers have failed on the same partition (#3727)
- Chronicle (Release v16.35.1): Keyed child updates in hierarchical projections no longer re-resolve the child’s creation event on every subsequent event of the same event source: when the event carries the child’s key and the child is already projected under the document the resolved parent key identifies, its placement is resolved with a single sink lookup — eliminating the per-event
FromParentHierarchyWarning flood and the redundant event-sequence lookups that preceded each warning (#3723) - Chronicle (Release v16.35.1): The creation-event rejection guard in
FromParentHierarchynow logs at Debug when the current event is itself the earliest candidate creation event — the normal steady-state outcome; only a creation event strictly later than the current event is still rejected with a Warning, as the genuine infinite-cycle anomaly (#3723) - Chronicle (Release v16.35.1): A child projection event that does not carry the property configured as its parent key now fails with a descriptive
MissingParentKeyForChildEvent— naming the projection, the children collection, the identified-by property, and the event type, sequence number and event source — instead of a bareArgumentNullException (Parameter 'value')that left failed partitions without a usable message (#3725) - Chronicle (Release v16.35.0): One rejected projection definition no longer aborts the whole registration: failures are isolated per definition, every other definition still lands, and the failed ones are reported and retried on the next registration instead of being left silently stale (#3722)
- Chronicle (Release v16.35.0): A projection whose pipeline cannot be built - for example a stale definition referencing a child collection the read model schema no longer has - no longer fails its grain activation and retries blindly forever; the failed partition now carries a descriptive error naming the projection, the child property and the read model, and the pipeline heals as soon as the definition is corrected (#3722)
- Chronicle (Release v16.35.0): Re-registering a projection with only a child collection changed now correctly evicts the cached pipeline in the observer subscriber (#3722)
- Chronicle (Release v16.34.3): The kernel logs
SkippingIncompleteConcurrencyScopeat Debug instead of Warning. WithCheckFirstAppendIntoAScopeoff — the shipped default — every first append into a new event source skips the check by design, so an application creating many event sources flooded the log with warnings; a caller that opts into the check sends an expectation the kernel validates rather than skips, so the skipped case never signals a check the caller asked for, and the append result keeps reporting the check as not performed (#3724) - cli (Release v2.8.2): An explicit
-n Default(or-e default) is now honored literally instead of being treated as “no value given” and silently falling back to the active context’s namespace or event store; only an omitted option falls back to the context, then the built-in default (#75) - Chronicle (Release v16.34.2): The
*-developmentand*-development-slimcontainer images start again without an encryption certificate. Since 16.33.1 they aborted at startup withAn encryption certificate is required in production for OpenIddict key security, because the check for a development build had regressed to theDOTNET_ENVIRONMENT/ASPNETCORE_ENVIRONMENTvariables the images never set; it is a compile-timeDEVELOPMENTcheck again, matching how the development TLS certificate is decided. - Chronicle (Release v16.34.2): The Workbench renders with its PrimeReact 10 look again — text-style toolbar buttons, the sidebar and namespace selector surfaces, bold table heads, styled inputs and the password field on the sign-in page — through PrimeReact 11’s styled mode instead of the baseline theme.
Removed
Section titled “Removed”- cli (Release v2.13.0): Remove obsolete GitHub release package bootstrap and local dependency sources now trusted NuGet publishing is available. (Cratis/cli#87)
- Chronicle (Release v16.36.1): The pre-publish Docker boot check
Deprecated
Section titled “Deprecated”- Components (Release v3.5.0): Retained
clientFilteringfor source compatibility while making its page-local behavior explicit (#159)