Data Plane Ownership (FORJD)
Appendix T: Data Plane Ownership (FORJD)
Retired — the DEML-local Rust data plane moved to FORJD. Earlier still, DEML operated an OpenTelemetry Collector → Redpanda → ClickHouse plane for product telemetry; that stack is also retired. Narrative: Chapter 34. Integration contract: docs/FORJD_INTEGRATION.md.
The data plane is owned by FORJD. The forjd-engine binary deploys on Fly.io from the FORJD repository and owns sealed ingest, the transactional outbox (Postgres outbox + Dragonfly streams), durable scheduling, probes, raw-telemetry normalization, request-time CPE lookup, analytics, ML, replay, and DLQ. DEML does not compile, deploy, or operate a local Rust workspace, ClickHouse cluster, Redpanda bus, or any FORJD_ROLE services.
DEML's FORJD deployment uses infrastructure/forjd/addons.yaml, whose
addons.enabled: all opts into the complete optional add-on catalog. FORJD
still treats add-ons as disabled by default for every other deployment and
reports installation/provisioning readiness independently through its catalog
API.
DEML integrates as a control plane only. Django resolves deml_account_id → forjd_tenant_id → secret_ref and calls FORJD synchronously through the BFF adapters in backend/forjd/ with a tenant-bound fjsvc_ service token. Durable delivery, retries, DLQ admission, and replay are FORJD responsibilities; DEML fails closed when FORJD is unavailable rather than inventing local workers. Endpoints, cutover flags, failure semantics, and rollback are documented in docs/FORJD_INTEGRATION.md.
The former Railway data-plane services (relay, scheduler, probe, normalizer, ingest, CPE) are retired. infrastructure/railway/services.json catalogs the retired service names, and python scripts/railway_retire_dataplane.py performs the Railway cleanup. The corresponding local Django state was retired in backend/monitor/migrations/0053_retire_local_data_plane.py; the underlying tables are retained deliberately for a rollback window.