Repository navigation
Conversation
…mage NuGet versions move into Directory.Packages.props (central package management), so a bump changes one line. The pin guards now check that copies agree instead of asserting literals: the Dockerfile's SDK stage matches global.json, the image runs on that SDK's runtime line, the EF Core packages and the dotnet-ef tool share a version, and the DotRecast pair agree. An update that moves every copy passes; one that misses a copy fails. The Dockerfile builds in sdk:10.0.401 and runs in runtime:10.0 as the image's non-root app user (UID 1654), keeping the output paths compose uses. The container model learns FROM stages, COPY --from/--chown/--chmod and USER; other COPY flags are still rejected. Refs InfiniteRasa#132 (CI-4, CI-7). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
- MSTEST0017: NonContiguousMemoryStreamTests passes expected before actual, and asserts the counts its Read calls return (CA2022). - CA2022: PythonWriter.ToString reads its buffer with ReadExactly. - CS0414/CS0219: drop MapChannelManager.MapChannel_PlayerQueue and three unused bonus locals in ManifestationManager. - EF1002: MigrationConsolidationTests and ClientWaypointIdTests use the parameterized SqlQuery/ExecuteSql; BootcampWorldContentTests keeps a raw query for table names (identifiers can't be parameters), with a scoped suppression. - EF1001: MySqlMigrationHistoryRepository keeps subclassing Pomelo's internal MySqlHistoryRepository, the only way to bound GET_LOCK names to 64 characters, now behind a scoped, explained suppression. - MSTEST0044: [DataTestMethod] becomes [TestMethod]. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
- dotnet.yml: a `migration drift` job runs has-pending-model-changes for all six EF contexts, and `tests complete` requires it. MySqlAuthContext's design-time factory now uses a fixed server version like Char and World, so none of the six needs a database server. - container.yml: builds the image, starts docker-compose.yml, and checks from inside each container that every TCP port compose maps is listening (a host-side probe always connects through Docker's proxy); UDP ports by their startup log line. Also checks the image runs as UID 1654, and runs an advisory Trivy scan pinned by commit. - release-on-comment.yml / release-container.yml: a /release comment on a merged PR from someone with write access dispatches a build of development's HEAD to GHCR, once CI has passed on that commit. - prune-container.yml: weekly, keeps the 14 newest image versions. - dependabot.yml: NuGet (grouped; EF Core 10 and Pomelo held back), GitHub Actions, and the SDK, whose global.json and Dockerfile bumps share one multi-ecosystem PR. - docs/setup.md: six drift commands, and how to bump the SDK or packages. Actions in workflows that push images or hold write tokens are pinned by commit SHA. Refs InfiniteRasa#132 (CI-1, CI-4, CI-5, CI-8, CI-9). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
Refs InfiniteRasa#132 (CI-7, CI-8, CI-9). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
…mpty SeedWorldContent writes today's Bootcamp evidence, and some of its notes are longer than the varchar(256) ConsolidatedWorldSchema created, so `dotnet ef database update --context MySqlWorldContext` on an empty server stopped with "Data too long for column 'reconstruction_note'". Sqlite doesn't enforce the width, and the existing boundary test only sees InsertDataOperation rows, not the seed's raw SQL inserts. Databases already past the seed were widened by WildernessAliaBranches and WildernessEvidenceCapacity; for them this changes nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
…asa#132: CI-6) A `mysql` job, matrixed over mysql:8.0 and mysql:8.4 service containers, applies all three MySQL contexts' migrations to an empty server with `dotnet ef database update`, then runs the new `MySql` test category against it. It fails unless every test in the category ran and passed, and `tests complete` now requires it. The MySql tests (MySqlLiveDatabaseTests) check that every migration is applied with none pending, that every table holds the same rows as after Sqlite's migrations, and that accounts, characters and missions round-trip through the repositories with MySQL's collation and foreign keys. They find the server through RASA_TEST_MYSQL and report inconclusive without it. Config stays file-only: the job writes a databasesettings.env.json for the design-time factories. TestShards.cs leaves the category out of the plan and every lane's filter excludes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
- Release waits for CI on the commit (a /release usually comes right after a merge), takes only development push runs, also requires the container smoke test when it ran, and reacts 🚀 or 👎 on the comment for the actual outcome instead of on dispatch. - Each push to development gets its own CI concurrency group, so a pending run is never replaced and every commit stays releasable. - Prune skips only on a 404, and fails on any other API error. - The smoke test spots a crash (restart: always hides it as a restart), matches UDP ports exactly, watches Rasa.NET.sln and .config, and keeps the advisory scan from failing the job or saving a cache on PRs. - Dependabot's docker entry matches every image in the Dockerfile. - Docs: SDK bumps arrive as one PR; released images are amd64 only. - Restore the line continuations in dotnet.yml that had collapsed to spaces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
- The Dockerfile model reads FROM past --platform and other flags, keeps each stage's WORKDIR (a stage built FROM another inherits it), accepts a stage index in COPY --from, and rejects a copy from the current stage. - The SDK guard strips @sha256 digests and accepts a runtime image pinned to a patch (runtime:10.0.12) as well as the floating line. - A guard that the build stage gets global.json, Directory.Packages.props and the tool manifest before it restores. - Live MySQL tests also read databasesettings.env.json for database names. - docs/setup.md: no hardcoded SDK or EF versions, the one-line recovery for a MySQL World database whose build stopped at SeedWorldContent before the reconstruction_note fix, and a warning to run the live tests only against a throwaway server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
A Wilderness harness removed the creatures it spawned but not its map's dynamic objects. EntityManager outlives the harness, so the Logos (and other objects) it registered kept the map channel, and with it the harness's whole world, reachable for the rest of the test run (gcroot: EntityManager -> DynamicObjects -> Logos -> MapChannel). Dispose now removes the objects on its map that it added, and RuntimeHarnessRetentionTests checks, with weak references and a forced full GC, that a disposed Wilderness or Bootcamp harness leaves its map channel, map channel manager and mission application collectable. The Wilderness guard fails without the fix. Also drops an unused navmesh Lazy that TestNavMeshes replaced. Refs InfiniteRasa#132. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AxABTHjs6nJrsXVCTnmMo7
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.
Fork validation run for the upstream PR finishing InfiniteRasa#132. Based on the InfiniteRasa#139 branch. Not for merging.
🤖 Generated with Claude Code