From 1850ff084c2d2ac6534668770fa0519a61708471 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 11 Sep 2026 14:14:41 +0000 Subject: [PATCH] docs(permissions): file fields store a sys_file id, not a URL in the column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit attachments-access.mdx told a reader that `Field.file` / `Field.image` keep a file URL in the record's own column. ADR-0104 D3 narrowed the stored form to an opaque `sys_file` id; the `{ id, name, size, mimeType, url }` object is the derived read form, produced at read/expand time and never stored. `valueSchemaFor` in packages/spec/src/data/field-value.zod.ts returns `FileReferenceIdValueSchema` alone for the stored form, so past the files-to-references backfill the column holds an id. A reader who believed the column held a URL would dereference it directly and get it wrong. The sentence's second half — these create no `sys_attachment` row, so nothing on that page applies to them — is correct, is the sentence's whole job, and is carried through unchanged. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01MkQhmuuJAVDjmeWNixwDDH --- content/docs/permissions/attachments-access.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/content/docs/permissions/attachments-access.mdx b/content/docs/permissions/attachments-access.mdx index aeb08efc52..fe49931fb8 100644 --- a/content/docs/permissions/attachments-access.mdx +++ b/content/docs/permissions/attachments-access.mdx @@ -17,9 +17,11 @@ inherits its parent record's.** A caller who can read a record can read its attachments; a caller who can edit a record can attach to and detach from it. Enforcement is layered, and every gate is fail-closed. -`Field.file` / `Field.image` are a **separate** path — those store a file URL -in the record's own column and never create a `sys_attachment` row, so nothing -on this page applies to them. +`Field.file` / `Field.image` are a **separate** path — those store an opaque +`sys_file` id in the record's own column (ADR-0104 D3; the +`{ id, name, size, mimeType, url }` shape is derived at read time, never +stored) and never create a `sys_attachment` row, so nothing on this page +applies to them. ## The opt-in gate — `enable.files`