Skip to main content

Execution Models Overview

RowOps separates the control plane (configuration, authentication, tier enforcement) from the execution plane (data processing). This page establishes the unified mental model for understanding where operations occur.


Control Plane vs Execution Plane

Control Plane (Server-Side)

The control plane manages configuration and access. It runs on RowOps's servers and handles:

ResponsibilityLocation
AuthenticationServer-side session management
License verificationServer-side endpoint
Tier enforcementServer-side token verification + execution-plane tier gate
Schema storageServer-side database
Key managementServer-side database
Audit loggingServer-side database
Usage trackingServer-side database

The control plane does not process row-level data. It validates access and returns configuration.

Execution Plane (Client-Side)

The execution plane processes data. It runs in the client environment (browser or Node.js) and handles:

ResponsibilityLocation
File parsingClient-side (browser or Node.js)
Schema validationClient-side engine
MaskingClient-side engine
TransformsClient-side engine
ProfilingClient-side engine
Export generationClient-side blob creation
Sync deliveryClient-to-target HTTP requests

The execution plane processes rows locally. Row content does not traverse the control plane.


Where Data Is Processed

┌─────────────────────────────────────────────────────────────┐
│ Client Environment │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Execution Plane │ │
│ │ File → Parse → Validate → Mask → Transform → Export │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ Metadata only │
│ ▼ │
└─────────────────────────────────────────────────────────────┘

┌────────┴────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Control │ │ Sync │
│ Plane │ │ Targets │
│ (RowOps) │ │ (User) │
└─────────────┘ └─────────────┘

Row data flows:

  • File → Client processing → Export blob or Sync target
  • Row content does not flow to the control plane

Metadata flows:

  • Client → Control plane: import events, row counts, validation summaries
  • Control plane → Client: schemas, tier limits, license status

Where Configuration Lives

ConfigurationStorage LocationAccessed By
SchemasServer-sideBoth modes
API keysServer-sideBoth modes
Project settingsServer-sideBoth modes
Tier limitsServer-sideBoth modes
Mask/Transform rulesWithin schema (server)Both modes
License cacheLocal filesystem (headless)Headless only
Domain verificationBrowser cacheBrowser only

Configuration is fetched from the control plane at initialization. The execution plane applies configuration locally.


Shared Behavior Across Modes

Both headless and dashboard-assisted modes share:

Same Processing Engine

The same engine executes validation, masking, transform, and profiling operations regardless of execution mode.

Same Schema Format

RowOpsSchema type definitions apply to both modes. Fields, validation rules, mask config, and transform config are identical.

Same Tier Limits

Tier-based feature gates (row limits, feature access) apply uniformly. Enforcement occurs during license verification and at the WASM tier gate (pipeline start + worker boundary).

Same Error Types

MaskingFailedError, TransformFailedError, and validation error structures are consistent across modes.


Mode-Specific Behavior

BehaviorDashboard-AssistedHeadless
AuthenticationSession + publishable keySecret key
Domain lockEnforcedNot applicable
UIReact componentsNone
License modeStrict onlyStrict or demo

What This Separation Enables

Client-Side Processing

Row data can be processed without transmitting it to RowOps servers. The execution plane is self-contained after initialization.

Centralized Configuration

Schemas and settings are managed in one place (dashboard) and applied consistently across all clients.

Network-Free Usage

Headless mode does not support cached license operation. Use demo mode for testing without network access, with a 100-row limit and watermarking.


What This Separation Does Not Guarantee

  • Complete isolation: Usage tracking and license verification require network calls by default
  • Identical behavior: Some enforcement details may differ between modes (e.g., row-filtering transforms are disallowed in headless)
  • Cryptographic boundaries: The separation is architectural, not cryptographically enforced

Next Steps