Skip to content

Commit 6442263

Browse files
committed
Add commercial evidence execution status
1 parent 1dfa98f commit 6442263

7 files changed

Lines changed: 133 additions & 5 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ The first production milestone is M3UA over a transport abstraction. SCCP, TCAP,
7272
| Supply-chain release execution | Phase 34 foundation-complete: final versioned SBOM, trusted timestamped package signing, provenance attestation, public API diff, artifact upload, ordered command-plan, release promotion gate, concrete workflow execution, status reporting, and final validation are available; retained release-run artifacts and commercial evidence are still required |
7373
| RC publish and commercial gate | Phase 35 complete: dry-run release rehearsal, gated NuGet prerelease publication, retained release notes, retained migration notes, final commercial readiness reporting, RC/stable decisioning, RC publication evidence manifest, release workflow channel wiring, status reporting, and final commercial gate report are available; stable publication remains blocked until commercial evidence is complete |
7474
| Commercial evidence readiness lockdown | Phase 36 foundation-complete: release target locking, protected secret readiness, evidence retention mapping, commercial evidence checklist, release preflight, protected release environments, dossier handoff, go/no-go gating, status reporting, and final validation are available; RC and stable publication remain blocked until retained commercial release evidence is complete |
75-
| Commercial evidence execution orchestration | Phase 37 in progress: evidence execution run identity, stage catalog, operator command plan, execution environment contract, artifact collection manifest, digest/redaction verification, blocker classification, and retry/resume policy are available; status reporting is still being implemented |
75+
| Commercial evidence execution orchestration | Phase 37 in progress: evidence execution run identity, stage catalog, operator command plan, execution environment contract, artifact collection manifest, digest/redaction verification, blocker classification, retry/resume policy, and status reporting are available; final validation is still pending |
7676

7777
## Requirements
7878

docs/PHASE37_COMMERCIAL_EVIDENCE_EXECUTION_ORCHESTRATION.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@ Each blocker declares whether it is retryable after correction. Unknown blockers
102102

103103
The policy prevents endless retries and keeps host capability, approval, and unknown failures under operator control.
104104

105+
## Unit 9 - Execution Orchestration Status
106+
107+
`SigtranCommercialEvidenceExecutionStatus` exposes the current orchestration state:
108+
109+
- Completed orchestration capabilities.
110+
- Default publication blockers.
111+
- Execution orchestration readiness.
112+
- Retained evidence readiness.
113+
- Commercial publication readiness.
114+
115+
The status is intentionally conservative. The orchestration contracts are ready, but publication is still blocked until real retained execution artifacts exist and final validation closes the phase.
116+
105117
## Validation
106118

107119
Each unit in this phase is validated with:

docs/PHASE37_SUMMARY.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ Phase 37 prepares the SDK to execute real commercial evidence runs after readine
1212
- Digest and redaction verification plan for every retained execution artifact.
1313
- Execution blocker classifier for readiness, environment, command, native SCTP, external peer, artifact, digest, redaction, and approval failures.
1414
- Retry and resume policy with bounded retries and manual-correction gates for non-retryable failures.
15+
- Execution orchestration status that reports completed capabilities, default blockers, orchestration readiness, retained evidence readiness, and commercial publication readiness.
1516

1617
## Readiness Position
1718

18-
The phase is in progress. Execution orchestration still requires status reporting and final validation.
19+
The phase is in progress. Execution orchestration status is now available. Final validation is still required before the phase can be closed.

docs/PHASE_INDEX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ This index is the complete phase map for Sigtran.NET. It links each phase to the
4141
| 34 | Supply-chain release execution | [Phase 34 Supply Chain Release Execution](PHASE34_SUPPLY_CHAIN_RELEASE_EXECUTION.md), [Phase 34 Summary](PHASE34_SUMMARY.md) | Foundation complete; retained release run pending |
4242
| 35 | RC publish and commercial gate | [Phase 35 RC Publish And Commercial Gate](PHASE35_RC_PUBLISH_COMMERCIAL_GATE.md), [Phase 35 Summary](PHASE35_SUMMARY.md), [Phase 35 Commercial Gate Report](PHASE35_COMMERCIAL_GATE_REPORT.md) | RC gate foundation complete; stable publication blocked |
4343
| 36 | Commercial evidence readiness lockdown | [Phase 36 Commercial Evidence Readiness Lockdown](PHASE36_COMMERCIAL_EVIDENCE_READINESS_LOCKDOWN.md), [Phase 36 Summary](PHASE36_SUMMARY.md) | Foundation complete; real commercial evidence still required |
44-
| 37 | Commercial evidence execution orchestration | [Phase 37 Commercial Evidence Execution Orchestration](PHASE37_COMMERCIAL_EVIDENCE_EXECUTION_ORCHESTRATION.md), [Phase 37 Summary](PHASE37_SUMMARY.md) | In progress; retry/resume policy complete |
44+
| 37 | Commercial evidence execution orchestration | [Phase 37 Commercial Evidence Execution Orchestration](PHASE37_COMMERCIAL_EVIDENCE_EXECUTION_ORCHESTRATION.md), [Phase 37 Summary](PHASE37_SUMMARY.md) | In progress; status reporting complete |
4545

4646
## Current Commercial Gate
4747

docs/SDK_ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ Status: Phase 36 is foundation-complete. The release target lock binds an RC ver
331331
- Define execution stages, operator commands, environment contracts, artifact collection, digest and redaction verification, blocker handling, retry/resume behavior, and execution status.
332332
- Keep the phase separate from real passing evidence: orchestration can prepare a run, but publication remains blocked until retained artifacts prove execution success.
333333

334-
Status: Phase 37 is in progress. Evidence execution run identity now binds a locked release target to a stable run id, operator identity, UTC start time, and run-scoped artifact root. The stage catalog now covers readiness preflight, native SCTP lab, external peer interoperability, protocol validation, performance benchmark, supply-chain evidence, release workflow dry-run, and dossier assembly with run-scoped artifact roots. The operator command plan now maps every stage to an ordered run-id-aware command and requires protected approval for supply-chain, workflow, and dossier assembly execution. The environment contract now binds run identity, lab inputs, and protected secrets while preventing fixed secret values from being stored. Artifact collection now maps all checklist artifacts to known stage roots and retained output paths. Digest and redaction verification now requires digest coverage for every artifact and redaction review for trace-bearing evidence. Blocker classification now categorizes readiness, environment, command, native SCTP, external peer, artifact, digest, redaction, and approval failures with retryability guidance. Retry/resume now applies bounded retries and manual-correction gates for non-retryable failures. Status reporting and final validation remain in progress.
334+
Status: Phase 37 is in progress. Evidence execution run identity now binds a locked release target to a stable run id, operator identity, UTC start time, and run-scoped artifact root. The stage catalog now covers readiness preflight, native SCTP lab, external peer interoperability, protocol validation, performance benchmark, supply-chain evidence, release workflow dry-run, and dossier assembly with run-scoped artifact roots. The operator command plan now maps every stage to an ordered run-id-aware command and requires protected approval for supply-chain, workflow, and dossier assembly execution. The environment contract now binds run identity, lab inputs, and protected secrets while preventing fixed secret values from being stored. Artifact collection now maps all checklist artifacts to known stage roots and retained output paths. Digest and redaction verification now requires digest coverage for every artifact and redaction review for trace-bearing evidence. Blocker classification now categorizes readiness, environment, command, native SCTP, external peer, artifact, digest, redaction, and approval failures with retryability guidance. Retry/resume now applies bounded retries and manual-correction gates for non-retryable failures. Status reporting now exposes completed capabilities, orchestration readiness, retained evidence readiness, publication readiness, and current blockers. Final validation remains in progress.
335335

336336
## Recommended First Deliverable
337337

src/Sigtran.NET.Tests/Program.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@
286286
Run("SIGTRAN commercial evidence execution verification requires digests and redaction", SigtranCommercialEvidenceExecutionVerificationRequiresDigestsAndRedaction);
287287
Run("SIGTRAN commercial evidence execution blocker classifier categorizes failures", SigtranCommercialEvidenceExecutionBlockerClassifierCategorizesFailures);
288288
Run("SIGTRAN commercial evidence execution retry policy gates resume decisions", SigtranCommercialEvidenceExecutionRetryPolicyGatesResumeDecisions);
289+
Run("SIGTRAN commercial evidence execution status summarizes orchestration readiness", SigtranCommercialEvidenceExecutionStatusSummarizesOrchestrationReadiness);
289290
Run("SIGTRAN status capabilities use domain documentation labels", SigtranStatusCapabilitiesUseDomainDocumentationLabels);
290291
Run("Native SCTP platform probe reports socket creation capability", NativeSctpPlatformProbeReportsSocketCreationCapability);
291292
Run("Native SCTP socket factory creates or reports unsupported platform", NativeSctpSocketFactoryCreatesOrReportsUnsupportedPlatform);
@@ -4763,6 +4764,22 @@ static void SigtranCommercialEvidenceExecutionRetryPolicyGatesResumeDecisions()
47634764
Assert(!unknown.CanRetry, "unknown blockers should not retry automatically");
47644765
}
47654766

4767+
static void SigtranCommercialEvidenceExecutionStatusSummarizesOrchestrationReadiness()
4768+
{
4769+
IReadOnlyList<string> capabilities = SigtranCommercialEvidenceExecutionStatus.GetCompletedCapabilities();
4770+
IReadOnlyList<string> blockers = SigtranCommercialEvidenceExecutionStatus.GetDefaultBlockers();
4771+
4772+
AssertEqual(9, SigtranCommercialEvidenceExecutionStatus.CompletedUnitCount, "commercial evidence execution completed unit count");
4773+
AssertEqual(9, capabilities.Count, "commercial evidence execution capability count");
4774+
Assert(capabilities.Contains("retry-resume-policy"), "execution status should include retry and resume policy");
4775+
Assert(capabilities.Contains("documentation"), "execution status should include documentation");
4776+
Assert(SigtranCommercialEvidenceExecutionStatus.ExecutionOrchestrationReady, SigtranCommercialEvidenceExecutionStatus.Describe());
4777+
Assert(!SigtranCommercialEvidenceExecutionStatus.RetainedExecutionEvidenceReady, SigtranCommercialEvidenceExecutionStatus.Describe());
4778+
Assert(!SigtranCommercialEvidenceExecutionStatus.CommercialPublicationReady, SigtranCommercialEvidenceExecutionStatus.Describe());
4779+
Assert(blockers.Contains("real-execution-artifacts-required"), "execution status should require real retained artifacts");
4780+
Assert(blockers.Contains("status-final-validation-pending"), "execution status should retain final validation blocker before phase closeout");
4781+
}
4782+
47664783
static void SigtranStatusCapabilitiesUseDomainDocumentationLabels()
47674784
{
47684785
IReadOnlyList<string>[] statusCapabilities =
@@ -4786,7 +4803,8 @@ static void SigtranStatusCapabilitiesUseDomainDocumentationLabels()
47864803
SigtranPackagePublicationStatus.GetCompletedCapabilities(),
47874804
SigtranSupplyChainReleaseStatus.GetCompletedCapabilities(),
47884805
SigtranReleaseCandidatePublicationStatus.GetCompletedCapabilities(),
4789-
SigtranCommercialEvidenceReadinessLockdownStatus.GetCompletedCapabilities()
4806+
SigtranCommercialEvidenceReadinessLockdownStatus.GetCompletedCapabilities(),
4807+
SigtranCommercialEvidenceExecutionStatus.GetCompletedCapabilities()
47904808
];
47914809

47924810
foreach (IReadOnlyList<string> capabilities in statusCapabilities)
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
namespace Sigtran.NET.Core.Utilities;
2+
3+
/// <summary>
4+
/// Provides commercial evidence execution orchestration status reporting.
5+
/// </summary>
6+
public static class SigtranCommercialEvidenceExecutionStatus
7+
{
8+
private static readonly string[] Capabilities =
9+
[
10+
"execution-run-identity",
11+
"execution-stage-catalog",
12+
"operator-command-plan",
13+
"execution-environment-contract",
14+
"artifact-collection-manifest",
15+
"digest-redaction-verification",
16+
"blocker-classification",
17+
"retry-resume-policy",
18+
"documentation"
19+
];
20+
21+
private static readonly string[] DefaultBlockers =
22+
[
23+
"real-execution-artifacts-required",
24+
"status-final-validation-pending"
25+
];
26+
27+
/// <summary>The status label.</summary>
28+
public const string StatusLabel = "Commercial Evidence Execution Orchestration";
29+
30+
/// <summary>The number of completed commercial evidence execution orchestration work units.</summary>
31+
public const int CompletedUnitCount = 9;
32+
33+
/// <summary>Returns the completed execution orchestration capability names.</summary>
34+
/// <returns>The completed capability names.</returns>
35+
public static IReadOnlyList<string> GetCompletedCapabilities()
36+
{
37+
return Capabilities.ToArray();
38+
}
39+
40+
/// <summary>Returns default blockers for commercial publication.</summary>
41+
/// <returns>The default commercial publication blockers.</returns>
42+
public static IReadOnlyList<string> GetDefaultBlockers()
43+
{
44+
return DefaultBlockers.ToArray();
45+
}
46+
47+
/// <summary>Whether the default execution orchestration contracts are ready.</summary>
48+
public static bool ExecutionOrchestrationReady
49+
{
50+
get
51+
{
52+
SigtranCommercialEvidenceExecutionRun run = CreateDefaultRun();
53+
SigtranCommercialEvidenceExecutionStageCatalog catalog = SigtranCommercialEvidenceExecutionStages.CreateDefault(run);
54+
SigtranCommercialEvidenceExecutionCommandPlan commandPlan = SigtranCommercialEvidenceExecutionCommands.CreateDefault(catalog);
55+
SigtranCommercialEvidenceExecutionEnvironmentContract environment = SigtranCommercialEvidenceExecutionEnvironments.CreateDefault(run);
56+
SigtranCommercialEvidenceExecutionArtifactManifest artifacts = SigtranCommercialEvidenceExecutionArtifacts.CreateDefault(catalog);
57+
SigtranCommercialEvidenceExecutionVerificationPlan verification = SigtranCommercialEvidenceExecutionVerifications.CreateDefault(artifacts);
58+
SigtranCommercialEvidenceExecutionBlockerClassifier blockerClassifier = SigtranCommercialEvidenceExecutionBlockers.CreateDefault();
59+
SigtranCommercialEvidenceExecutionRetryPolicy retryPolicy = SigtranCommercialEvidenceExecutionRetryPolicies.CreateDefault(catalog);
60+
61+
return Capabilities.Length == CompletedUnitCount
62+
&& run.IsReady
63+
&& catalog.IsReady
64+
&& commandPlan.IsReady
65+
&& environment.IsReady
66+
&& artifacts.IsReady
67+
&& verification.IsReady
68+
&& blockerClassifier.IsReady
69+
&& retryPolicy.IsReady;
70+
}
71+
}
72+
73+
/// <summary>Whether retained real execution evidence is available in the default status.</summary>
74+
public static bool RetainedExecutionEvidenceReady => false;
75+
76+
/// <summary>Whether the current default status can publish a commercial package.</summary>
77+
public static bool CommercialPublicationReady => ExecutionOrchestrationReady
78+
&& RetainedExecutionEvidenceReady
79+
&& DefaultBlockers.Length == 0;
80+
81+
/// <summary>Formats a compact commercial evidence execution orchestration summary.</summary>
82+
/// <returns>The commercial evidence execution orchestration summary.</returns>
83+
public static string Describe()
84+
{
85+
return $"{StatusLabel}: completedUnits={CompletedUnitCount} capabilities={Capabilities.Length} orchestrationReady={ExecutionOrchestrationReady} retainedEvidenceReady={RetainedExecutionEvidenceReady} commercialPublicationReady={CommercialPublicationReady} blockers={DefaultBlockers.Length}";
86+
}
87+
88+
private static SigtranCommercialEvidenceExecutionRun CreateDefaultRun()
89+
{
90+
return SigtranCommercialEvidenceExecutionRuns.CreateReleaseCandidateRun(
91+
"1.0.0-rc.1",
92+
"abcdef123456",
93+
"run-20260622-001",
94+
"release-automation",
95+
DateTimeOffset.UtcNow);
96+
}
97+
}

0 commit comments

Comments
 (0)