CultNet: witness element types carry ids; peers and fixtures follow

CultWitnessContractPin, CultWitnessArtifactEntry and CultWitnessTimingEntry get
an id slot. The JSON schema contract and the Python schema copy gain an optional
id per element, and the Python and TypeScript fixtures carry and assert ids.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-29 15:03:09 +02:00
commit 09dabd38c5
5 changed files with 27 additions and 6 deletions

View file

@ -104,6 +104,10 @@ namespace GameCult.Networking
[MessagePackObject]
public sealed class CultWitnessContractPin
{
[Key(4)]
[CultElementId]
public string Id { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the contract role inside the bundle.
/// </summary>
@ -135,6 +139,10 @@ namespace GameCult.Networking
[MessagePackObject]
public sealed class CultWitnessArtifactEntry
{
[Key(6)]
[CultElementId]
public string Id { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the artifact role inside the witness bundle.
/// </summary>
@ -178,6 +186,10 @@ namespace GameCult.Networking
[MessagePackObject]
public sealed class CultWitnessTimingEntry
{
[Key(5)]
[CultElementId]
public string Id { get; set; } = string.Empty;
/// <summary>
/// Gets or sets the pipeline stage name.
/// </summary>