2.7 KiB
2.7 KiB
Project and dependency boundaries
Tracking: #3
FinalFactory.Rendezvous.Contracts <- FinalFactory.Rendezvous.Client
^ ^
| |
FinalFactory.Rendezvous.Server FinalFactory.Rendezvous.TestClient
Contractstargetsnetstandard2.1and contains only versioned, transport-neutral IDs and wire contracts. It cannot reference Server, LiteNetLib, or Godot. Its only package isSystem.Text.Json, used for the canonical cross-runtime JSON contract.Clienttargetsnetstandard2.1, references Contracts and the pinned LiteNetLib package, and contains no Godot or Server dependency.Servertargets .NET 10 LTS, references Contracts, LiteNetLib, and the first-party ASP.NET Core OpenAPI generator, and owns HTTP hosting, UDP mediation, application policy, and ephemeral state.TestClienttargets .NET 8, references only the public Client/Contracts seams and LiteNetLib, and must never reach into Server internals.Teststarget .NET 10 and may reference every project solely to verify public behavior and architecture boundaries.
The dependency-boundary tests inspect compiled assembly references. A forbidden engine, transport, or server dependency therefore fails the normal test gate.
Supported toolchain
- Build SDK: .NET SDK 10.0.301, pinned by
global.json. - Verification runtime: .NET SDK 8.0.128 supplies the pinned .NET 8.0.28 runtime used by TestClient process tests and release verification.
- Server runtime: .NET 10 LTS.
- Client/contracts compatibility target: .NET Standard 2.1, consumable by the .NET 8-or-later runtime used by current Godot 4 C# projects.
- TestClient runtime: .NET 8.
- LiteNetLib: 2.1.4, pinned centrally and restored from the lock files.
- Microsoft.OpenApi: patched 2.7.5 line, centrally pinned because the version originally pulled by the .NET 10 generator is affected by CVE-2026-49451.
The repository uses central package versions, per-project lock files, deterministic compilation, nullable reference types, warnings as errors, current .NET analyzers, and formatting verification. CI restores in locked mode so a package graph change must be deliberate and committed.
Primary compatibility references: