Repository navigation
Bobcat 1.0.0-rc.1 - #5079
Merged
Merged
Bobcat 1.0.0-rc.1#5079
Conversation
Every project that takes Bobcat moves to 1.0.0-rc.1 through the root Directory.Packages.props: Bobcat, Bobcat.Xunit, Bobcat.Generators and the build's Bobcat.Supervisor (0.60.4). The 0.60.4 hold on WolverineFx.Bobcat, its tests and the two dogfooding samples (WolverineFxBobcatBobcatVersion) is removed: rc.1 fixed JasperFx/bobcat#672, the reason for it. JasperFx and its family move 2.90.1 -> 2.90.2, the minimum Bobcat 1.0 declares. WolverineScenario follows the CritterStackScenario.Store -> EventStore rename (bobcat#709/#710). WolverineFx.Bobcat's tests take the intended 1.0 rendering changes: value aliases read as #alias (bobcat#640), strings in a values cell are quoted and GivenReadModel reads as "there is a T with ..." (bobcat#633/#634), a read model's Then names its id, and a single read with no stream reads the one document in the store, so none is an assertion failure rather than a critical (bobcat#616). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YDKQhnBVcmVLCTkJbVeADk
This was referenced Oct 19, 2026
This was referenced Oct 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves Wolverine onto Bobcat 1.0.0-rc.1. Nothing is published from this PR.
This unblocks a WolverineFx.Bobcat release paired with Bobcat 1.0 (JasperFx/bobcat#677). The published WolverineFx.Bobcat 6.51.0-alpha.1 does not work with Bobcat rc.1 at run time, because rc.1 renamed
CritterStackScenario.StoretoEventStorewith no alias.WolverineScenario.heardOn, onrunActAsync's path, callsCritterStackScenario.get_Store(), soWolverineSpec.WhenActingthrowsMissingMethodException. The CritterStackSamples migration found this. This PR moves that call toEventStore.Pins changed (root
Directory.Packages.props)VersionOverride)WolverineFxBobcatBobcatVersionhold (0.60.4) is gone. It was there for ThenSingleReadModel<T>() no longer refuses a MultiStreamProjection when the scenario has no stream (#616 short-circuits the check) bobcat#672 (ThenSingleReadModelstopped refusing aMultiStreamProjectionwhen the scenario has no stream). rc.1 fixed that (bobcat#719), anda_single_read_model_refuses_a_multi_stream_projectionpasses unchanged. TheVersionOverridewas removed from these projects:src/Bobcat/Wolverine.Bobcat/Wolverine.Bobcat.csproj, which is the WolverineFx.Bobcat package. Its nuspec dependency becomes Bobcat >= 1.0.0-rc.1.Wolverine.Bobcat.TestsandWolverine.Bobcat.Http.Tests.IncidentService.TestsandProcessManagerViaHandlers.Tests.xunit.v34.0.2 / Microsoft.Testing.Platform 2.x (Move the whole repo to xunit.v3 4.x on Microsoft.Testing.Platform 2 (root global.json test runner) #4979), which is what Bobcat 1.0's adapters need. The projects that take Bobcat (Wolverine.ComplianceTests, SlowTests, the six LeaderElection projects, the RabbitMQ and Azure Service Bus transport tests, the two samples, and WolverineFx.Bobcat and its tests) all go through central package management and need no csproj change beyond theVersionOverrideremovals above.Code changes
WolverineScenario:Store->EventStore, the CritterStackScenario rename (bobcat#709/Explicit binding of Rabbit MQ topic exchange somehow leading to erroneous usage with Wolverine internal agent messages #710, no alias). That was the only use in WolverineFx.Bobcat. I checked the built assemblies with System.Reflection.Metadata:Wolverine.Bobcat.dllhas no member reference toCritterStackScenario::get_Store. The onlyget_Storereferences left are onWolverine.Tracking.AppendedEventsandBobcat.CritterStack.StoreHighWaterMark, both of which still have it. It now referencesCritterStackScenario::get_EventStore.Wolverine.Bobcat.Http.dllreferences neither.acting_through_the_tracked_session.an_act_that_goes_through_the_bus_is_judged_on_what_the_tracked_session_sawis the regression test for this. It acts withWhenActingthrough the bus on a single store, so the append goes through a Wolverine-opened session and the tracked session hears it, which goes throughrunActAsyncandheardOn. It passes, along with the rest of that class andancillary_stores(11/11). Nothing in the tests or samples used the scenario'sStore: the samples'Storeis their ownIDocumentStore.#theAppointment(bobcat#640): 9 tests inWolverine.Bobcat.Testsand 3 inWolverine.Bobcat.Http.TestsSeat: "4C", bobcat#633)GivenReadModelreadsthere is a Dashboard with Status: "quiet"(bobcat#634)the Appointment #theAppointment matchesmodeled_read_models.a_single_read_model_needs_a_stream_to_be_about: with no stream, a single read now reads the oneTin the store (bobcat#616). None is now an assertion failure (SpecificationFailedException) rather than aSpecCriticalException. The message assertion ("the act started none and the givens arranged none") is unchanged.build/SupervisedTests.csis unchanged. ItsRetryFailuresInFreshProcesspolicy retries every failure in a fresh process, with or without a trait. Bobcat 1.0's new default (bobcat#661) only covers tests carrying aRetrytrait, so dropping the policy would stop retries for the whole repo. It stays so behaviour is identical.RetryLedger.csis Wolverine's own JSON ledger: it doesn't use Bobcat'sTestLedgerand doesn't parseRunReporttext or JSON, so Docs: Remove method injection of bus in constructor injection example #730, Map message type to MQTT topic #655 and Dynamic code generation fails occasionaly on a list messages that use a Marten aggregate and thus trigger code generation in parallel #649 don't affect it.KnownTestDurationsis still keyed by uid, which rc.1 still accepts beside display names.Tested locally
dotnet build wolverine.slnx -c Release -f net9.0: 0 errors. The net10.0-only projects (WolverineFx.Bobcat.Http and its tests, both samples' tests) built unpinned, andbuild/build.csprojbuilds too.Wolverine.Bobcat.Tests(net9.0) against a throwaway Postgres: 166 passed, 1 skipped, 0 failed apart from the 37 Polecat tests, which need SQL Server. All 37 failed connecting in fixture setup. CI runs them.Wolverine.Bobcat.Http.Tests(net10.0): 43/43 passed.IncidentService.Tests: 8/8 passed.ProcessManagerViaHandlers.Tests: 29/29 passed../build.sh CoreTests --framework net9.0, which runs CoreTests through the Bobcat.Supervisor rc.1 build code: 3668 passed, 8 skipped, 0 retries, exit 0.The database, broker and LeaderElection suites are left to CI.
CI
All 45 checks are green. That includes CIBobcat, where the Polecat half of WolverineFx.Bobcat's tests runs against SQL Server.
CISqlServer was cancelled once by the 20-minute job cap. The tests had already finished green (
636 passed, 2 skipped, targetSucceeded 19:15), and the cap hit during the post-job steps. A re-run passed in 19m50s. This is not caused by rc.1:Bobcat issues found
This migration found no Bobcat bug. Every test change matches an intended 1.0 change listed above.
The one break is the binary incompatibility above. It is intended (the rename has no alias), but Bobcat's
docs/compatibility.mdstill names WolverineFx.Bobcat 6.51.0-alpha.1 as the supported pairing for 1.0.0-rc.1, and that pairing fails inWhenActing. Bobcat is tracking the docs side separately.🤖 Generated with Claude Code
https://claude.ai/code/session_01YDKQhnBVcmVLCTkJbVeADk