fluid-core/docs/adr/0002-out-of-process-attachment.md

44 lines
1.8 KiB
Markdown
Raw Normal View History

# ADR-0002 — Out-of-process attachment
**Status:** accepted · **Date:** 2026-09-04
## Context
A FLUID interface has to be able to wrap an existing API. The question is
whether fluid-core is a library that API imports, or a process that sits in
front of it.
Blueprint §42 already answers this implicitly: `gateway`, `revision-router` and
`adapter-r41`/`adapter-r42` are separate deployments. That is process-level
integration, not library-level.
## Decision
fluid-core attaches out of process. The gateway and router run in front of
adapter processes reached over the network. The target API contributes no code,
imports no library, and may be written in any stack.
An in-process SDK is explicitly deferred, not rejected. It would buy richer
signal — call-sequence correlation and structured consumer feedback that a
proxy cannot see from outside — at the cost of SDK versioning across languages.
## Rationale
Minimal conformance (`FluidAPIStandards.md` §36) requires a deterministic
contract, revision identity, telemetry, declared intent, an evidence link,
responsibility boundaries and deterministic security. Every one of those is
observable from the proxy. Nothing in the conformance core needs to be inside
the target process.
The language-agnostic promise is only credible if the framework never asks for
an import. Making the SDK optional from the start, rather than retrofitting the
proxy later, is what keeps that true.
## Consequences
- The revision descriptor carries `runtime.upstream`: the adapter's address.
- Interaction topology (Blueprint §6.4) is reconstructed from correlation IDs
observed at the gateway, not reported by the consumer.
- Explicit feedback (`FluidAPIStandards.md` §15) arrives over the wire as its
own endpoint rather than through an SDK call.