Skip to content

Fix the Dapr guild server build, which breaks the whole solution build - #1004

Merged
sven-n merged 1 commit into
masterfrom
claude/fix-dapr-guild-build
Sep 29, 2026
Merged

sven-n merged 1 commit into
masterfrom
claude/fix-dapr-guild-build

Conversation

@sven-n

@sven-n sven-n commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Master doesn't compile. Building the solution the way the pipeline does — dotnet build --configuration Release -p:ci=true in src — fails on pristine origin/master:

src/Dapr/ServerClients/GuildServer.cs(15,28): error CS0535:
  'GuildServer' does not implement interface member
  'IGuildServer.ChangeGuildMemberPositionByNameAsync(uint, string, GuildPosition, int)'
Build FAILED.
    1 Error(s)

Reproduced in a clean worktree checked out at origin/master, with no other changes present.

Cause

c51d62b ("fix(guild): cross-server role assignment, save-failure restore, role limits") added a fourth parameter int masterTotalLevel to IGuildServer.ChangeGuildMemberPositionByNameAsync for the battle master limit. It was applied to the real implementation and the caller:

  • src/GuildServer/GuildServer.cs ✅
  • src/GameLogic/PlayerActions/Guild/GuildRoleAssignAction.cs ✅

but not to the Dapr path, which implements the same interface:

  • src/Dapr/ServerClients/GuildServer.cs ❌
  • src/Dapr/GuildServer.Host/GuildServerController.cs ❌

Why CI didn't catch it before merge

The .NET Core GitHub workflow runs dotnet publish src/Startup/MUnique.OpenMU.Startup.csproj, which doesn't reference the Dapr projects — so a solution that doesn't compile still shows a green check there. Nothing else in the GitHub checks builds the whole solution.

The change

The new parameter is carried through the Dapr path as well, so the remote call behaves like the in-process one:

  • GuildMemberRoleChangeByNameArguments gains a MasterTotalLevel field
  • the Dapr client takes masterTotalLevel and puts it in the request
  • the host controller passes data.MasterTotalLevel on to the guild server

Without this the battle master limit would be silently skipped whenever the guild server runs out of process, so forwarding it is both what makes it compile and what keeps the behaviour consistent.

Verification

Run locally with a .NET 10 SDK, from a clean tree (all bin/obj removed):

  • dotnet build --configuration Release -p:ci=true over src/MUnique.OpenMU.sln — 0 errors (the same command reproduces the failure on master without this change)
  • dotnet test on every tests/*Tests/*.csproj — all green: AttributeSystem 44 · ChatServer 26 · Network.Packets 608 · Network 73 · Pathfinding 10 · Persistence.Initialization 32 · PlugIns 41 · MUnique.OpenMU 1101 · Web 95

Note: the MUnique.OpenMU Azure check is red on this PR, but that is unrelated — the pipeline is out of credits, so it fails regardless of the code. I originally assumed that red was this compile error, because the "1 errors / 0 warnings" summary matched; that inference was wrong, and merging this will not turn that check green. The compile failure above is real and verified independently of it.

Found while keeping #974 current with master; it is unrelated to that PR, so it's here on its own.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UYEj5xw6iAJKEoDX3hyMZh

c51d62b added a masterTotalLevel parameter to
IGuildServer.ChangeGuildMemberPositionByNameAsync, for the battle master limit.
The real implementation and its caller were updated, but the two Dapr projects
were not, so MUnique.OpenMU.ServerClients no longer implements the interface:

  src/Dapr/ServerClients/GuildServer.cs(15,28): error CS0535: 'GuildServer'
  does not implement interface member
  'IGuildServer.ChangeGuildMemberPositionByNameAsync(uint, string, GuildPosition, int)'

The .NET Core workflow only publishes src/Startup, which doesn't reference the
Dapr projects, so it stayed green while the solution build has been failing.

The parameter is now carried through the Dapr path as well: the arguments
record gained the field, the client forwards it, and the host controller passes
it on to the guild server.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UYEj5xw6iAJKEoDX3hyMZh
@sven-n
sven-n merged commit 54ac3a8 into master Sep 29, 2026
2 of 3 checks passed
@sven-n
sven-n deleted the claude/fix-dapr-guild-build branch September 29, 2026 04:58
sven-n pushed a commit that referenced this pull request Sep 29, 2026
Brings in the Dapr guild server build fix (#1004), so the whole solution
compiles again. The Selupan fall skill took update version 120, so the illusion
temple update moves to 121.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UYEj5xw6iAJKEoDX3hyMZh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants