Skip to content

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"]
Hold "Alt" / "Option" to enable pan & zoom

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)"]
Hold "Alt" / "Option" to enable pan & zoom

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