2.1 KiB
2.1 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.Clienttargetsnetstandard2.1, references Contracts and the pinned LiteNetLib package, and contains no Godot or Server dependency.Servertargets .NET 10 LTS, references Contracts and LiteNetLib, 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. - 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.
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: