3.8 KiB
ADR-0003: Connector Extraction Feasibility And Split-Package Seams
- Status: Accepted
- Date: 2026-04-24
- Owners: OpenClaw maintainers
- Related roadmap items:
R162with prior boundary decision inADR-0002
Context
ADR-0002 established that the connector is an optional attached subsystem, not the primary published artifact of this repository. The remaining question is whether that attached subsystem should now be extracted into a separately packaged connector or separate repo.
Current code structure still mixes:
- connector platform adapters and runtime
- shared installation/token lifecycle services
- shared callback signing and replay-protection contracts
- backend delivery/result APIs that the connector calls locally
- tenant/config/auth boundaries that remain owned by the core package
That means extraction is no longer a purely packaging question. It is a shared-contract question.
Decision
OpenClaw adopts a no-go-for-split-now decision for connector extraction.
Current recommendation:
- Keep the connector in-repo as an optional attached subsystem.
- Treat a future optional extra package as the only plausible next extraction target.
- Treat both sidecar-only distribution and separate repo / primary connector package as no-go now options.
Minimum Stable Seams Required Before Any Split
Any future extraction must first stabilize these seam families:
-
installation registry and token refs
- workspace/account binding records
- tenant-scoped token-reference ownership
- installation diagnostics and fail-closed resolution
-
interactive callback security contract
- signed callback envelopes
- timestamp / replay / idempotency checks
- action-policy mapping and approval downgrade semantics
-
delivery and result bridge
- submission/result polling contract
- callback delivery expectations
- backend result payload compatibility
-
config/auth and tenant boundary
- connector runtime config contract
- admin token / auth expectations
- tenant header behavior
- server-side secret/state ownership
Why Separate Packaging Is A No-Go Now
Current blockers are concrete, not theoretical:
- shared services import connector types and connector adapters import shared services, so extraction would currently create unstable bidirectional package seams
- installation/token/state ownership still lives in shared repo services rather than a versioned connector-boundary package
- connector API/client flows still assume in-repo backend evolution instead of a versioned external backend contract
services/sidecarstill imports connector config/client modules directly, so even a packaging-only split would not isolate ownership yet
Consequences
Positive:
- maintainers now have one explicit go/no-go answer instead of repeatedly re-litigating extraction
- future connector extraction work can target named seam families instead of rediscovering coupling ad hoc
- admin diagnostics can expose the same contract to future packaging or release automation
Trade-offs:
- the repo intentionally keeps connector and core package code together for now
- packaging hygiene remains a future concern rather than a solved distribution problem
- extraction pressure is deferred until shared contracts are versionable on their own
Rejected Alternatives
-
Extract connector into a separate repo now
- Rejected because current coupling would move instability across package boundaries instead of reducing it.
-
Publish connector as a sidecar-only primary distribution now
- Rejected because current operator workflows still assume the embedded OpenClaw package/runtime remains primary.
-
Leave extraction as an undocumented future possibility
- Rejected because future packaging work needs an explicit seam map and a clear no-go baseline.