- Make world_port resolution fallible (Result<u16>) across LocalBackend, HostService, DirectRouteManager, and RelayLink without default fallbacks to 8085.
- Enforce strict 4-way invariant: local_id ruleset == RealmAccess.mode == Db.realm() == RealmInfo.ruleset. Malformed or unknown suffixes fail closed.
- If Wildcard is selected and world-port resolution fails (or simultaneous mode is disabled), Direct and Relay fail closed with actionable error and zero fallback to CoA.
- Fix documentation drift in docs/WILDCARD.md and docs/MULTIRULESET_PORTABLE_AUDIT.md regarding simultaneous execution, distinct ports, and current vs historical baseline.
- Enforce fail-closed backend resolution in LocalBackend::info (unknown ruleset = error).
- Implement strict three-space isolation (Wildcard != CoA != Reborn) across canonical store, host mappings, and collections.
- Isolate collection namespaces (wildcard:appearance, wildcard:vanity) and reject cross-ruleset collections in claim and import.
- Enforce Control Protocol v2 ruleset verification on TransferOffer, TransferCommit, and Claimed response.
- Route Direct Ingress and Relay Link dynamically according to realm world port (8085 for CoA, 8086 for Wildcard).
- Add runtime session attack rejection test suite (cross-ruleset session offers, checkpoints, owner acks, server IDs).
- Verify end-to-end Wildcard session lifecycle and documentation updates.
Five float fields (open world, dungeons, raids, ordinary mobs, bosses; 0.1 to 10) in six languages, with save-time validation in coa-core. They appear once the
server's Content Scaling module carries the matching CoAContentScaling.Difficulty.Health.* settings.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Play failed with ERROR_ELEVATION_REQUIRED (740) for clients whose
executable requires administrator rights, because Command::spawn shows
no permission prompt. Launch normally first and, only on 740, start the
game through ShellExecuteExW with the runas verb, keeping the client
folder as the working directory and closing the returned process handle.
Other errors, including a declined prompt (1223), are returned unchanged.
The Manager itself stays unelevated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Share migration planning and execution across update phases
* Apply updates in one recovery-backed pass without nested server rehearsals
* Preserve applied core SQL and share account migration history across realms