---
id: ADR-PFM-DJE-001
title: Shared engine with service-owned storage
product_area: platform
module: data-job-engine
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
decision: >-
  Adopting services execute the shared engine against eight local tables and
  their own domain operations.
constrains:
  - DOM-PFM-DJE-001
  - DOM-PFM-DJE-004
  - SVC-PFM-DJE-engine
  - SVC-PFM-DJE-crm-data-jobs
  - SVC-PFM-DJE-data-jobs
  - SVC-PFM-DJE-membership-data-jobs
  - RESP-PFM
origin: >-
  services-platform:docs/proposals/rhythm-data-job-engine-plan.md §5.3 (approved
  by Andrew 2026-10-12); PLAT-M19 Product Accepted 2026-10-22
alternatives:
  - option: Central execution with per-record service calls
    why_not: Remote calls cannot commit a domain change and its local receipt together.
  - option: Independent bulk implementations in each service
    why_not: >-
      Separate implementations would duplicate version capture, receipts,
      batching and recovery behavior.
consequences:
  - >-
    The owner can commit the record, receipt, history and producer mapping
    together.
  - Job listings remain service-local; the current console reads CRM jobs.
  - The cited release decision requires adopters to use the same engine version.
  - >-
    Adoption requires local tables, operation routes and execution
    infrastructure; Membership has declarations but lacks runnable storage.
supersedes: []
evidence:
  - 'macroservice-libraries at 54536a44: packages/data-jobs/README.md#The tables'
  - >-
    services-platform at ad3f6a65: docs/proposals/rhythm-data-job-engine-plan.md
    §5.3
---

# Shared Engine With Service-Owned Storage

## Context

Bulk work spans several record owners, each responsible for its persistence and save rules.

## Decision and Origin

Adopting services execute the shared engine against eight local tables and their own domain operations. The origin recorded above supplies the authority for this choice; implementation evidence supplies the limits described here.

## Alternative Comparison

Central execution with per-record service calls: Remote calls cannot commit a domain change and its local receipt together.

Independent bulk implementations in each service: Separate implementations would duplicate version capture, receipts, batching and recovery behavior.

## Consequences

The owner can commit the record, receipt, history and producer mapping together.

Job listings remain service-local; the current console reads CRM jobs.

The cited release decision requires adopters to use the same engine version.

Adoption requires local tables, operation routes and execution infrastructure; Membership has declarations but lacks runnable storage.
