Commit 60d48a0
docs(adr): ADR-0073 — automation execution identity (non-human principal for user-less runs) (#2318)
* docs(adr): ADR-0073 — automation execution identity (non-human principal for user-less runs)
Completes the identity model (ADR-0068 unified the human surface) by adding the
non-human / automation identity that user-less runs need:
- Automation is a first-class identity expressed as built-in roles (`automation`
org-scoped, `platform_automation` unscoped) — the ADR-0068 idiom; no anonymous run.
- `runAs` becomes an authorization POSTURE (user / automation-with-RLS / system),
decoupling authorization from attribution; `automation` (RLS-enforced) is the new
safe default for user-less triggers, `system` (god-mode) unchanged for back-compat.
- Attribution always concrete (audit actor), decoupled from record ownership so
automation never silently owns the rows it writes (owner-RLS would hide them).
- User-less `runAs:'user'` is a configuration error.
Staged per ADR-0049: contract + seeded roles + lint completeness now (non-breaking,
mirrors ADR-0068 v1); runtime wiring (attribution then RLS-enforced authorization +
scopable grants) deferred to M2. Grounds the decision in how Salesforce / ServiceNow
/ AWS IAM / K8s / iPaaS / GitHub Actions handle automation identity.
Status: Proposed — for discussion. Refs #1888, #2308; builds on ADR-0049/0057/0066/0068.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs(adr): ADR-0073 v2 — right-size v1 to decision-record + guardrail, defer runtime to M2 (gated on first consumer)
* docs(adr): ADR-0073 — correct tenancy model to environment-per-database (ADR-0002); automation principal is per-env Data-Plane, cross-env is Control-Plane
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent eaaa345 commit 60d48a0
1 file changed
Lines changed: 184 additions & 0 deletions
0 commit comments