ADR 0015: Read-only connectors, agent service identity and ELN content canonicalisation
- Status
- Accepted
- Date
- Deciders
- Founder
Context
The founder chose one ELN (Benchling) and one QMS/SOP source (Veeva Vault QualityDocs) for a mid-size biotech pilot. The ELN’s only notebook write path is early access with breaking-change notices; the QMS is the controlled record for SOPs; regulators expect agent changes to be attributable to the agent and separately approved by a person. No vendor offers a public developer sandbox.
Decision
- Both connectors are read-only (
write_policy = read_only). Agent drafts stay in Trovensa as proposals; scientists carry them into the notebook themselves with the provenance footer. - Agents act under a service identity
agent:<agent_key>@<org_id>recorded asactor_agent_id, with the approving person recorded asapproved_by_user_id; connectors use a per-connection service credential (client credentials or an integration user) with a minimal profile. - ELN entry versions are
external_version = <payload_hash>@<modifiedAt>where the hash is sha256 of canonical JSON of the entry content (days in order, notes in order, table cells row-major, mentions expanded totype:id, attachments asid:sha256);target_ref = benchling:entry:<id>@<hash prefix>. - Inbound events arrive at
POST /hooks/{provider_id}/{connection_id}, are verified before parsing, stored inwebhook_deliveriesand treated as pointers; the canonical object is re-fetched. Launch-from-notebook uses one-timelaunch_idswith a 10-minute expiry. - Fake servers with the same contract (Benchling, Vault) carry CI and the local demo until partner credentials arrive.
Consequences
- Programs stay isolated by
connection.scope_rules(project ids, document types) enforced in Trovensa even where the vendor token is tenant-wide. - Partner sandbox provisioning is a named blocker, not a gate; the demo path J1 needs no partner.
Alternatives considered
- Delegated user credentials for writes: makes the vendor audit trail name a human for an agent’s change; rejected with read-only connectors.
- Vendor MCP servers: protocol revision and audit attribution unverified; reference-only.
- Org-level connections: a scope-model change; connections stay program-scoped in phase 2 (decision 0018).
Follow-ups
- Notebook write-back through a stable versioned API when the vendor ships it (R3, feature-flagged).
Last updated on