Control-plane boundaries¶
Beampipe coordinates archive discovery and workflow execution without becoming the archive, scheduler, or science runtime. Its authority is durable intent: what was requested, which immutable inputs were used, what side effect was attempted, and what each external system later reported.
Ownership map¶
The interactive architecture map expands each boundary.
Durable records¶
| Record | Why it exists | Stability |
|---|---|---|
| Project config revision | Reproduce discovery and manifest policy | Immutable after upload |
| Deployment profile snapshot | Reproduce backend and resource intent | Pinned by execution |
| Execution ledger | Hold current control and external state axes | Updated through validated transitions |
| Job and claim history | Prove worker ownership and recovery | Append-oriented audit |
| Manifest and graph artifacts | Reproduce translated inputs and mutations | Content-addressed / checksummed |
| Run record | Preserve backend identifiers and poll detail | Execution-scoped |
| Provenance event | Explain meaningful state and operator actions | Append-only narrative |
Side-effect contract¶
Before a worker contacts a scheduler or DALiuGE manager, Beampipe persists intent and deterministic external identity. The worker then performs the effect under a leased claim and records the observation. This ordering makes three difficult cases recoverable:
- The process stops before making the external call: persisted intent remains safe to resume.
- The process stops after the call but before recording its result: submission becomes uncertain and must be reconciled.
- A stale worker returns after another worker recovered the claim: the fencing token prevents stale state from being committed.
Responsibilities¶
| Component | Responsibility |
|---|---|
| API | Authentication, source registry, operator intent, project/profile lifecycle, read models |
| PostgreSQL | Authoritative control state, queues, artifacts, claims, history, provenance |
| Worker | Typed adapter calls, deterministic preparation, bounded external effects, polling |
| Project config | Survey identity, archive queries, transforms, manifest shape, graph patches, automation |
| Deployment profile | Translator, manager, scheduler, resource, TLS, and facility configuration |
| Console | Live projection of durable and probed state; never an alternate source of truth |
Explicit non-responsibilities¶
Beampipe does not evaluate the science graph, emulate Slurm, infer success from one backend response, store SSH private keys in project YAML, or reconstruct an execution from mutable active configuration.
API boundary¶
The Rust API exposes /api/v2 and generates OpenAPI from utoipa. Use the API workflow for request order and the API schema for exact objects.
Next: follow data through discovery and execution.