|
313 | 313 | Run("SIGTRAN commercial evidence filesystem integrity seal matches ledger", SigtranCommercialEvidenceFileSystemIntegritySealMatchesLedger); |
314 | 314 | Run("SIGTRAN commercial evidence filesystem publication attachments protect trace evidence", SigtranCommercialEvidenceFileSystemPublicationAttachmentsProtectTraceEvidence); |
315 | 315 | Run("SIGTRAN commercial evidence filesystem promotion gate requires approval", SigtranCommercialEvidenceFileSystemPromotionGateRequiresApproval); |
| 316 | +Run("SIGTRAN commercial evidence filesystem command materializer writes execution script", SigtranCommercialEvidenceFileSystemCommandMaterializerWritesExecutionScript); |
| 317 | +Run("SIGTRAN commercial evidence filesystem execution status summarizes pending final validation", SigtranCommercialEvidenceFileSystemExecutionStatusSummarizesPendingFinalValidation); |
316 | 318 | Run("SIGTRAN status capabilities use domain documentation labels", SigtranStatusCapabilitiesUseDomainDocumentationLabels); |
317 | 319 | Run("Native SCTP platform probe reports socket creation capability", NativeSctpPlatformProbeReportsSocketCreationCapability); |
318 | 320 | Run("Native SCTP socket factory creates or reports unsupported platform", NativeSctpSocketFactoryCreatesOrReportsUnsupportedPlatform); |
@@ -5416,6 +5418,51 @@ static void SigtranCommercialEvidenceFileSystemPromotionGateRequiresApproval() |
5416 | 5418 | } |
5417 | 5419 | } |
5418 | 5420 |
|
| 5421 | +static void SigtranCommercialEvidenceFileSystemCommandMaterializerWritesExecutionScript() |
| 5422 | +{ |
| 5423 | + string tempRoot = Path.Combine(Path.GetTempPath(), "sigtran-commercial-evidence-" + Guid.NewGuid().ToString("N")); |
| 5424 | + Directory.CreateDirectory(tempRoot); |
| 5425 | + |
| 5426 | + try |
| 5427 | + { |
| 5428 | + SigtranCommercialEvidenceFileVerificationCommandPlan plan = SigtranCommercialEvidenceFileVerificationCommands.CreateDefault( |
| 5429 | + Path.Combine(tempRoot, "artifacts")); |
| 5430 | + string scriptPath = Path.Combine(tempRoot, "scripts", "commercial-evidence.sh"); |
| 5431 | + |
| 5432 | + SigtranCommercialEvidenceFileSystemCommandMaterialization materialization = SigtranCommercialEvidenceFileSystemCommandMaterializer.WriteScript( |
| 5433 | + plan, |
| 5434 | + scriptPath, |
| 5435 | + DateTimeOffset.UtcNow); |
| 5436 | + |
| 5437 | + Assert(materialization.IsReady, materialization.Describe()); |
| 5438 | + Assert(materialization.ScriptExists, "materialized command script should exist"); |
| 5439 | + Assert(materialization.ScriptSizeBytes > 0, "materialized command script should be non-empty"); |
| 5440 | + Assert(materialization.IncludesArtifactRoot, "materialized command script should include artifact root"); |
| 5441 | + Assert(materialization.IncludesAllCommands, "materialized command script should include all commands"); |
| 5442 | + Assert(materialization.IncludesPromotionGate, "materialized command script should include promotion gate"); |
| 5443 | + } |
| 5444 | + finally |
| 5445 | + { |
| 5446 | + DeleteTempEvidenceRoot(tempRoot); |
| 5447 | + } |
| 5448 | +} |
| 5449 | + |
| 5450 | +static void SigtranCommercialEvidenceFileSystemExecutionStatusSummarizesPendingFinalValidation() |
| 5451 | +{ |
| 5452 | + IReadOnlyList<string> capabilities = SigtranCommercialEvidenceFileSystemExecutionStatus.GetCompletedCapabilities(); |
| 5453 | + IReadOnlyList<string> blockers = SigtranCommercialEvidenceFileSystemExecutionStatus.GetDefaultBlockers(); |
| 5454 | + |
| 5455 | + AssertEqual(9, SigtranCommercialEvidenceFileSystemExecutionStatus.CompletedUnitCount, "filesystem execution completed unit count"); |
| 5456 | + AssertEqual(9, capabilities.Count, "filesystem execution capability count"); |
| 5457 | + Assert(capabilities.Contains("command-materialization"), "filesystem execution status should include command materialization"); |
| 5458 | + Assert(!capabilities.Contains("documentation"), "filesystem execution status should keep documentation pending before final validation"); |
| 5459 | + Assert(SigtranCommercialEvidenceFileSystemExecutionStatus.ExecutionFoundationReady, SigtranCommercialEvidenceFileSystemExecutionStatus.Describe()); |
| 5460 | + Assert(!SigtranCommercialEvidenceFileSystemExecutionStatus.RealApprovedCommercialRunReady, SigtranCommercialEvidenceFileSystemExecutionStatus.Describe()); |
| 5461 | + Assert(!SigtranCommercialEvidenceFileSystemExecutionStatus.CommercialPublicationReady, SigtranCommercialEvidenceFileSystemExecutionStatus.Describe()); |
| 5462 | + Assert(blockers.Contains("real-approved-commercial-run-required"), "filesystem execution status should require a real approved run"); |
| 5463 | + Assert(blockers.Contains("status-final-validation-pending"), "filesystem execution status should keep final validation pending"); |
| 5464 | +} |
| 5465 | + |
5419 | 5466 | static SigtranCommercialEvidenceFileSystemPublicationAttachmentExecution CreateReadyCommercialEvidenceFileSystemPublicationAttachmentExecution(string tempRoot) |
5420 | 5467 | { |
5421 | 5468 | return SigtranCommercialEvidenceFileSystemPublicationAttachments.Create( |
|
0 commit comments