Skip to content

Commit 83f465e

Browse files
committed
Add native SCTP support matrix
1 parent c407c17 commit 83f465e

6 files changed

Lines changed: 117 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ The first production milestone is M3UA over a transport abstraction. SCCP, TCAP,
3636
| MAP readiness | Foundation readiness report with capability count; external MAP SMS interoperability vectors and operator-profile validation remain the production gate |
3737
| Interoperability tooling | Phase 6 foundation-ready: trace frames, Wireshark-friendly hex dumps, conformance vectors, built-in M3UA/MAP vectors, simulator scripts, MAP SMS flow builders, local TCP samples, sample catalog, CI profile, and readiness report; production gate is external interoperability lab evidence |
3838
| Commercial readiness | Phase 7 started: internal release readiness is available; commercial production readiness requires native SCTP verification, external interoperability evidence, and release governance |
39+
| Native SCTP support | Phase 7 matrix added: Linux requires lab verification; Windows and macOS are contract-only until a production provider is verified |
3940

4041
## Requirements
4142

docs/PHASE7_COMMERCIALIZATION.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,15 @@ bool canClaimCommercialProduction = report.CommercialReady;
1515
Internal release readiness is currently available because SDK foundations, interoperability tooling, and CI verification are present.
1616

1717
Commercial readiness remains blocked until native SCTP verification, external interoperability evidence, and release governance are complete.
18+
19+
## Native SCTP Support Matrix
20+
21+
`SigtranNativeSctpSupport.GetSupportMatrix()` exposes the current native SCTP support plan:
22+
23+
| Platform | Status |
24+
| --- | --- |
25+
| Linux | Verification required |
26+
| Windows | Contract only |
27+
| macOS | Contract only |
28+
29+
Linux is the target for native SCTP lab verification. Windows and macOS remain supported through transport contracts and development adapters until a production provider is selected and verified.

docs/SCTP_TRANSPORT.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,7 @@ The report exposes `FoundationCapabilityCount` and `RequiredFoundationCapability
114114
Phase 2 completes the SDK-level SCTP foundation: metadata contracts, association lifecycle vocabulary, connection options, reconnect policy, stream selection, PPID helpers, health snapshots, readiness reporting, and a metadata-aware TCP development adapter.
115115

116116
The remaining production gate is explicit: native SCTP implementation and interoperability verification are required before this SDK can be used as a production SCTP stack.
117+
118+
## Phase 7 Native SCTP Matrix
119+
120+
`SigtranNativeSctpSupport.GetSupportMatrix()` records native SCTP support claims for commercial release planning. Linux is marked as verification required, while Windows and macOS are contract-only until a production provider is selected and verified.

src/sigtran.net.Tests/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
Run("SIGTRAN interoperability readiness reports foundation status", SigtranInteroperabilityReadinessReportsFoundationStatus);
2222
Run("SIGTRAN phase 6 status summarizes completed tooling", SigtranPhase6StatusSummarizesCompletedTooling);
2323
Run("SIGTRAN commercial readiness reports release gates", SigtranCommercialReadinessReportsReleaseGates);
24+
Run("SIGTRAN native SCTP support matrix reports verification status", SigtranNativeSctpSupportMatrixReportsVerificationStatus);
2425
Run("TCAP BER element encodes short and long lengths", TcapBerElementEncodesShortAndLongLengths);
2526
Run("TCAP transaction identifiers use BER context tags", TcapTransactionIdentifiersUseBerContextTags);
2627
Run("TCAP BER Invoke component round-trips", TcapBerInvokeComponentRoundTrips);
@@ -281,6 +282,17 @@ static void SigtranCommercialReadinessReportsReleaseGates()
281282
Assert(report.Describe().Contains("externalInterop=False", StringComparison.Ordinal), report.Describe());
282283
}
283284

285+
static void SigtranNativeSctpSupportMatrixReportsVerificationStatus()
286+
{
287+
IReadOnlyList<SigtranNativeSctpSupportEntry> matrix = SigtranNativeSctpSupport.GetSupportMatrix();
288+
289+
AssertEqual(3, matrix.Count, "native SCTP support matrix count");
290+
AssertEqual(SigtranOperatingSystemFamily.Linux, matrix[0].OperatingSystem, "native SCTP Linux row");
291+
AssertEqual(SigtranNativeSctpSupportStatus.VerificationRequired, matrix[0].Status, "native SCTP Linux status");
292+
AssertEqual(SigtranNativeSctpSupportStatus.ContractOnly, matrix[1].Status, "native SCTP Windows status");
293+
Assert(!SigtranNativeSctpSupport.IsProductionVerified(), "native SCTP should not be production verified yet");
294+
}
295+
284296
static void TcapBerElementEncodesShortAndLongLengths()
285297
{
286298
Span<byte> shortBuffer = stackalloc byte[8];

src/sigtran.net/Core/Utilities/SigtranCommercialReadiness.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public static SigtranCommercialReadinessReport GetReport()
7373
hasSdkFoundation: true,
7474
hasInteroperabilityTooling: SigtranInteroperabilityReadiness.GetReport().FoundationReady,
7575
hasCiVerification: SigtranCiVerification.CreateDefaultProfile().Steps.Count > 0,
76-
hasNativeSctpVerification: false,
76+
hasNativeSctpVerification: SigtranNativeSctpSupport.IsProductionVerified(),
7777
hasExternalInteroperabilityEvidence: false,
7878
hasReleaseGovernance: false);
7979
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
namespace sigtran.net.Core.Utilities;
2+
3+
/// <summary>
4+
/// Identifies an operating system family for native SCTP support planning.
5+
/// </summary>
6+
public enum SigtranOperatingSystemFamily
7+
{
8+
/// <summary>Linux operating systems.</summary>
9+
Linux,
10+
11+
/// <summary>Windows operating systems.</summary>
12+
Windows,
13+
14+
/// <summary>macOS operating systems.</summary>
15+
MacOS
16+
}
17+
18+
/// <summary>
19+
/// Identifies native SCTP support status.
20+
/// </summary>
21+
public enum SigtranNativeSctpSupportStatus
22+
{
23+
/// <summary>The SDK exposes contracts only.</summary>
24+
ContractOnly,
25+
26+
/// <summary>The platform requires lab verification.</summary>
27+
VerificationRequired,
28+
29+
/// <summary>The platform is verified for production use.</summary>
30+
ProductionVerified
31+
}
32+
33+
/// <summary>
34+
/// Describes native SCTP support for one operating system family.
35+
/// </summary>
36+
public sealed class SigtranNativeSctpSupportEntry
37+
{
38+
/// <summary>Creates a native SCTP support entry.</summary>
39+
/// <param name="operatingSystem">The operating system family.</param>
40+
/// <param name="status">The support status.</param>
41+
/// <param name="notes">The support notes.</param>
42+
public SigtranNativeSctpSupportEntry(
43+
SigtranOperatingSystemFamily operatingSystem,
44+
SigtranNativeSctpSupportStatus status,
45+
string notes)
46+
{
47+
OperatingSystem = operatingSystem;
48+
Status = status;
49+
Notes = string.IsNullOrWhiteSpace(notes) ? throw new ArgumentException("Support notes are required.", nameof(notes)) : notes;
50+
}
51+
52+
/// <summary>The operating system family.</summary>
53+
public SigtranOperatingSystemFamily OperatingSystem { get; }
54+
55+
/// <summary>The support status.</summary>
56+
public SigtranNativeSctpSupportStatus Status { get; }
57+
58+
/// <summary>The support notes.</summary>
59+
public string Notes { get; }
60+
}
61+
62+
/// <summary>
63+
/// Provides native SCTP support planning data.
64+
/// </summary>
65+
public static class SigtranNativeSctpSupport
66+
{
67+
private static readonly SigtranNativeSctpSupportEntry[] Entries =
68+
[
69+
new(SigtranOperatingSystemFamily.Linux, SigtranNativeSctpSupportStatus.VerificationRequired, "Target platform for native SCTP lab verification."),
70+
new(SigtranOperatingSystemFamily.Windows, SigtranNativeSctpSupportStatus.ContractOnly, "Use the transport contract or development TCP adapter until a verified SCTP provider is selected."),
71+
new(SigtranOperatingSystemFamily.MacOS, SigtranNativeSctpSupportStatus.ContractOnly, "No production native SCTP claim is made.")
72+
];
73+
74+
/// <summary>Returns the native SCTP support matrix.</summary>
75+
/// <returns>The native SCTP support entries.</returns>
76+
public static IReadOnlyList<SigtranNativeSctpSupportEntry> GetSupportMatrix()
77+
{
78+
return Entries.ToArray();
79+
}
80+
81+
/// <summary>Returns whether every platform entry is production verified.</summary>
82+
/// <returns>True when all entries are production verified; otherwise false.</returns>
83+
public static bool IsProductionVerified()
84+
{
85+
return Entries.All(static entry => entry.Status == SigtranNativeSctpSupportStatus.ProductionVerified);
86+
}
87+
}

0 commit comments

Comments
 (0)