---
id: ADR-PFM-DJE-008
title: Interactive and file lanes share the batch runner
product_area: platform
module: data-job-engine
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
decision: >-
  Interactive requests carry at most 500 items; file jobs use durable
  orchestration and chunked input, with both lanes executing through the common
  batch runner.
constrains:
  - DOM-PFM-DJE-001
  - WF-PFM-DJE-001
  - WF-PFM-DJE-008
  - SVC-PFM-DJE-crm-data-jobs
  - SVC-PFM-DJE-engine
origin: >-
  services-platform:docs/proposals/rhythm-data-job-engine-plan.md §9.1 the two
  lanes (approved 2026-10-12)
alternatives:
  - option: Use durable orchestration for every small request
    why_not: >-
      Small changes would incur orchestration work even when their input fits
      the interactive lane.
  - option: Send large inputs in API request bodies
    why_not: Request and function resource limits constrain large payloads.
consequences:
  - The submission body selects the lane at the same operation route.
  - Bulk input lives in chunk files rather than per-item database rows.
  - >-
    File jobs lack an interactive preview, and large console selections are
    converted into files.
supersedes: []
evidence:
  - >-
    macroservice-libraries at 54536a44: README.md#The bulk lane;
    src/bulk-data-job-tasks.ts
---

# Interactive And File Lanes Share The Batch Runner

## Context

The same domain changes range from small selections to very large files.

## Decision and Origin

Interactive requests carry at most 500 items; file jobs use durable orchestration and chunked input, with both lanes executing through the common batch runner. The origin recorded above supplies the authority for this choice; implementation evidence supplies the limits described here.

## Alternative Comparison

Use durable orchestration for every small request: Small changes would incur orchestration work even when their input fits the interactive lane.

Send large inputs in API request bodies: Request and function resource limits constrain large payloads.

## Consequences

The submission body selects the lane at the same operation route.

Bulk input lives in chunk files rather than per-item database rows.

File jobs lack an interactive preview, and large console selections are converted into files.
