Files
KArtSell.Aegis/src/KArtSell.BuildingBlocks/Versioning/VersionSet.cs
T
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

33 lines
1.1 KiB
C#

namespace KArtSell.BuildingBlocks.Versioning;
/// <summary>
/// Immutable identity of the data, model, configuration and code used for a decision.
/// Values are opaque, approved identifiers or SHA-256 digests; they are never inferred from the client.
/// </summary>
public sealed record VersionSet(
string DatasetId,
string DataHash,
string ModelVersion,
string ConfigVersion,
string CodeSha,
string ContractVersion)
{
public void EnsureValid()
{
EnsureNotBlank(DatasetId, nameof(DatasetId));
EnsureNotBlank(DataHash, nameof(DataHash));
EnsureNotBlank(ModelVersion, nameof(ModelVersion));
EnsureNotBlank(ConfigVersion, nameof(ConfigVersion));
EnsureNotBlank(CodeSha, nameof(CodeSha));
EnsureNotBlank(ContractVersion, nameof(ContractVersion));
}
private static void EnsureNotBlank(string value, string name)
{
if (string.IsNullOrWhiteSpace(value))
{
throw new ArgumentException($"{name} must be an approved, non-blank identifier.", name);
}
}
}