From c7fe68738e5e35da64f1a531c66e772ad03ff225 Mon Sep 17 00:00:00 2001 From: Guilhem Lemouel Date: Mon, 19 Oct 2026 07:09:24 -0700 Subject: [PATCH] docs: say a shared object storage also reaches the parent's data from an operator fork Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/operator-write-rights.md | 4 ++-- .../src/lib/components/workspaceSettings/RulesetEditor.svelte | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/operator-write-rights.md b/docs/operator-write-rights.md index 3eb568ed50..f3af5c2d47 100644 --- a/docs/operator-write-rights.md +++ b/docs/operator-write-rights.md @@ -134,8 +134,8 @@ An operator who forks is a developer in the fork: the creator row copies only `i the rule grants an operator arbitrary code execution. Deploying scripts, flows and apps back runs with the user's role in the parent, where the operator write checks refuse it, so an admin or a `wm_deployers` member deploys them instead. Data is not behind that check: a data table kept on fork -(`KeepOriginal`, the default) is a pointer at the parent's database, and a `Shared` ducklake writes -the parent's lake, so code in the fork reads and writes the parent's data directly. The ruleset +(`KeepOriginal`, the default) is a pointer at the parent's database, and a shared object storage or +ducklake writes the parent's, so code in the fork reads and writes the parent's data directly. The ruleset toggle's help text says so; an admin who turns it on accepts it, or also turns on `RequireIsolatedForks` (`docs/fork-object-storage.md`), which binds operators too. The developer row also costs a seat: the self-hosted seat count takes a user who is a developer in any workspace, forks included, diff --git a/frontend/src/lib/components/workspaceSettings/RulesetEditor.svelte b/frontend/src/lib/components/workspaceSettings/RulesetEditor.svelte index 919b332ff9..c5445a5057 100644 --- a/frontend/src/lib/components/workspaceSettings/RulesetEditor.svelte +++ b/frontend/src/lib/components/workspaceSettings/RulesetEditor.svelte @@ -321,7 +321,7 @@ options={{ right: 'Allow operators to fork' }} /> {@render description( - "Operators cannot fork a workspace unless a ruleset turns this on. It applies to every operator, whatever the bypass list says. An operator who forks is a developer in the fork and counts as a developer seat. There they can run any code, including against this workspace's data tables and shared ducklakes, which the fork uses directly unless isolated forks are required. They still cannot deploy scripts, flows or apps back to this workspace." + "Operators cannot fork a workspace unless a ruleset turns this on. It applies to every operator, whatever the bypass list says. An operator who forks is a developer in the fork and counts as a developer seat. There they can run any code, including against this workspace's data tables and any object storage or ducklakes shared with the fork, which it uses directly unless isolated forks are required. They still cannot deploy scripts, flows or apps back to this workspace." )}