DeliveryHost¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
| Bounded context | BC-23 Source & Pipelines |
| Platform / plane | DevOps / GitOps / Execution |
| Deployment granularity | standalone host |
| Status | target · ConnectSoft.Factory.Delivery |
| Built from | connectsoft-microservice · libraries: connectsoft-extensions-saas-abstractions, connectsoft-extensions-saas-asp-net-core, connectsoft-extensions-messaging-model, connectsoft-extensions-messaging-model-orleans, connectsoft-extensions-persistence-model-nhibernate, connectsoft-extensions-observability |
| Decisions | ADR-0004, ADR-0012, ADR-0014, ADR-0015 |
| Traceability | FR-07 FR-08 FUX-05 FUX-06 NFR-08 NFR-12 XL-04 XL-10 |
Purpose and responsibilities¶
DeliveryHost composes the three delivery modules — PipelineExecutionService (receipts for proposals, pull requests and pipeline runs), ReleaseService (immutable product releases with evidence) and EnvironmentPromotionService (gated promotions and rollbacks) — into one deployable. It draws the line the June-2026 catalog blurred: the Factory does not own repositories, branches, commits, pull requests or pipeline runs; Azure DevOps or GitHub does, reached through the Integration platform's connectors with the shared-write class. What the Factory owns is the receipt of every such action with provenance to the run that caused it, the release as an immutable assembly of digests and attestations, and the gates between a release and an environment.
Provisioning and GitOps reconciliation are not here either: they are the Runtime Cloud platform's (BC-25), which receives a desired state from a promotion and reports back.
Context and boundaries¶
flowchart LR
S["DeliveryHost"]
StudioBff["StudioBff"] -->|sync-http| S
ToolExecutorHost["ToolExecutorHost"] -->|grpc| S
S -->|grpc| IntegrationHost["IntegrationHost"]
S -->|grpc| KnowledgeHost["KnowledgeHost"]
S -->|grpc| ControlPlaneApi["ControlPlaneApi"]
S -->|grpc| GovernanceHost["GovernanceHost"]
S -->|sync-http| ext_identity_platform["ext-identity-platform"]
The host is called by the propose-change-set and deploy-environment tools through the tool executor (so every delivery action an agent takes carries a tool receipt and its class), by the Studio BFF, and by provisioning's apply and failure reports. It reads the Integration, Knowledge, Control and Governance hosts and nothing else.
Domain model¶
None modelled
No aggregates are modelled for this item yet.
No entities modelled.
Entities and value objects¶
None modelled
No entities or value objects are modelled for this item yet.
Data model and storage¶
| Store | Role | Engine / profile | Tables |
|---|---|---|---|
| Delivery store | primary | azure-sql / nhibernate-sqlserver | — |
None modelled
No tables are modelled for this item yet.
APIs¶
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/delivery/health |
DeliveryHealth | factory.health.read |
read | natural | GW-01 | Liveness, readiness and dependency health (delivery store, connectors, artifact store, inbox lag). |
GET |
/delivery/meta/systems |
DeliverySystems | factory.meta.read |
read | natural | GW-03 | The source-control and CI systems of record configured per tenant (Azure DevOps, GitHub) through connectors. |
None modelled
No gRPC methods are modelled for this item yet.
Messages¶
None modelled
No events are modelled for this item yet.
None modelled
No commands are modelled for this item yet.
None modelled
No consumed events are modelled for this item yet.
Workers and jobs¶
None modelled
No workers are modelled for this item yet.
Actors and grains¶
None modelled
No grains are modelled for this item yet.
Sagas and long-running flows¶
None modelled
No sagas are modelled for this item yet.
flowchart LR
T[Tool executor · propose-change-set · deploy-environment] --> P[PipelineExecutionService]
T --> E[EnvironmentPromotionService]
C[Connectors · Azure DevOps · GitHub] -- verified deliveries --> P
P -- PipelineRunCompleted · ChangeProposalMerged --> R[ReleaseService]
R -- ReleaseReady --> E
E -- PromotionApproved · desired state --> PROV[IaCProvisioningService · BC-25]
PROV -- ProvisioningApplied · Failed --> E
P & R & E --> SQL["(delivery-sql)"]
Options and configuration¶
| Section | Key | Type | Default | Reloadable | Secret | Summary |
|---|---|---|---|---|---|---|
Delivery:Host |
EnabledModules |
string[] | [pipelines, releases, promotions] |
no | no | Modules composed into this host. |
Delivery:Systems |
DefaultSystemOfRecord |
string | azure-devops |
yes | no | Default source and CI system for new projects: azure-devops |
OrleansMessaging |
ServiceName |
string | delivery |
no | no | Messaging profile service name. |
Metrics and observability¶
| Metric | Instrument | Unit | Dimensions | Summary |
|---|---|---|---|---|
connectsoft.factory.delivery.host.inbox_lag |
gauge | s | module | Age of the oldest unprocessed event per module. |
Security¶
| Authentication | client-credentials |
| Scopes | factory.health.read (Health probes.); factory.meta.read (System metadata.) |
| Roles | Operator, PlatformAdmin, Observer |
| Tenant isolation | row-filter |
| Data classification | internal |
| Max side-effect class | production |
| Secrets | delivery-sql (key-vault, rotate 90 d); messaging-transport (key-vault, rotate 90 d) |
Dependencies¶
Outbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| IntegrationHost | grpc | Azure DevOps and GitHub connectors (shared-write class) and inbound deliveries. | degrade | yes |
| KnowledgeHost | grpc | Receipts, SBOMs, attestations and manifests as artifacts. | fail-fast | yes |
| ControlPlaneApi | grpc | Approvals of class production for promotions; environments; run attribution. | fail-fast | yes |
| GovernanceHost | grpc | Deployment-domain policy decisions; audit evidence. | fail-fast | yes |
| ext-identity-platform | sync-http | Workload identity. | fail-fast | yes |
Inbound
| Target | Kind | Purpose | Failure mode | Required |
|---|---|---|---|---|
| StudioBff | sync-http | Pipeline, release and promotion views. | — | yes |
| ToolExecutorHost | grpc | The deploy-environment and propose-change-set tools call the modules. | — | yes |
Failure and recovery¶
| Scenario | Detection | Recovery | Data impact | RTO (min) |
|---|---|---|---|---|
| System of record unreachable | connector health | receipts queue; promotions wait; nothing is marked done without a receipt | delayed receipts | 60 |
| Delivery store lost | readiness | restore from backup (RPO 15 min); receipts can be re-pulled from the system of record through connectors | none | 240 |
NFR targets¶
| Target | Class value (pilot-batch) | Override |
|---|---|---|
| latency_p95_ms | 0 | — |
| availability_pct | 99.5 | — |
| throughput_rps | 10 | — |
| rpo_minutes | 15 | — |
| rto_minutes | 240 | — |
| cost_class | medium | — |
Deployment¶
| Granularity | standalone host |
| Topologies | saas-default, hybrid, on-prem, hybrid-compute |
| Runtime | aks; replicas 2–6 |
| Ports | https 8120, grpc 8122, silo 12120, gateway 31120 |
Current implementation¶
ConnectSoft.AzurePipelines, the BaseTemplate pack and compose scripts, Azure Artifacts publishing and Pulumi programs exist and run per repository; DerechHaLev is the production proof. No Factory delivery service, receipt store, release registry or promotion gate exists.
Later capabilities¶
GitHub-hosted and Azure DevOps-hosted runners provisioned per tenant by the Factory; a second system of record (GitLab) through a connector; signed commits with the Factory's workload identity.
Decisions and traceability¶
| Family | Ids |
|---|---|
| FR | FR-07, FR-08 |
| FUX | FUX-05, FUX-06 |
| NFR | NFR-08, NFR-12 |
| XL | XL-04, XL-10 |