You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/adrs/00014-enterprise-contract-integration.md
+31-40Lines changed: 31 additions & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,10 +25,13 @@ Users need the ability to:
25
25
26
26
## Decision
27
27
28
-
We will integrate Conforma into Trustify as an optional validation service by spawning the Conforma CLI asynchronously.
28
+
We will integrate Conforma into Trustify as a user triggered validation service by interacting with Conforma CLI.
29
29
Validation is manually triggered — not automatic on SBOM upload.
30
30
Validation on upload is deferred to a follow-up version.
31
31
32
+
Conforma CLI is deployed separately from Trustify as either a standalone container or equivalent.
33
+
A HTTP wrapper will act as a proxy between Trustify EC service and Conforma CLI.
34
+
32
35
Uploaded SBOMs start in "Pending" status and are not discoverable until validated. EC validation is one mechanism by which an SBOM can move from "Pending" to "Accepted" or "Rejected":
33
36
34
37
- An SBOM in "Pending" can be submitted for EC validation.
@@ -46,39 +49,21 @@ Storing full JSON in S3 rather than only a summary was chosen explicitly to pres
46
49
47
50
## Consequences
48
51
49
-
Integrating via CLI spawning rather than a native API introduces an external process dependency that adds operational overhead (Conforma must be installed and version-pinned on every server) and per-validation process spawning overhead. These are accepted trade-offs given that no Conforma API exists yet. The executor is built behind an adapter interface so the implementation can be swapped for a REST client in Phase 3 without changes to the service layer or API.
52
+
Using a HTTP API wrapper decouples the validation process into a external service.
53
+
This will better catter for large-scale deployments as EC validation has its own constraint.
54
+
Meanwhile it adds infrastructure complexity as the Webhook will need to be deployed alongside the EC system
- Args array only, never shell strings; all user inputs sanitized
60
-
- Version compatibility
61
-
- Document required Conforma version; validate on startup
62
-
- Concurrent load exhausting resources
63
-
- Semaphore (default: 5)
64
-
- 429 on exhaustion
65
-
- No native API yet
66
-
- Adapter pattern for future migration (Phase 3)
67
-
- Large SBOMs causing OOM
68
-
- Stream to temp file
69
-
- pass path to Conforma
70
-
- Growing S3 storage costs
71
-
- Retention policy (90-day default)
56
+
Integrating via CLI spawning rather than a native API introduces an external process dependency that adds operational overhead (Conforma must be installed and version-pinned on every server) and per-validation process spawning overhead. These are accepted trade-offs given that no Conforma API exists yet. The executor is built behind an adapter interface so the implementation can be swapped for a REST client in Phase 3 without changes to the service layer or API.
72
57
73
58
### Alternatives Considered
74
59
75
60
#### In-Process Policy Engine: Rejected
76
61
77
62
Reimplementing Enterprise Contract logic in Rust would diverge from upstream and create significant maintenance burden.
78
63
79
-
#### Webhook-based Integration: Deferred
64
+
#### Direct Integration: Rejected
80
65
81
-
Decouples validation into a separate service, which is better for large-scale deployments but adds infrastructure complexity premature for initial scope.
66
+
Couple validation integrated within Trustify service through a directly controlled component was simpler but worse for large-scale deployments.
82
67
83
68
#### Embedded WASM Module: Rejected
84
69
@@ -168,19 +153,23 @@ C4Container
168
153
C4Component
169
154
title EC Validation Module - Component Diagram
170
155
171
-
Container(api, "API Gateway", "Actix-web", "REST API for EC operations")
0 commit comments