Skip to content

Commit bda7b7c

Browse files
claude[bot]claude
andauthored
docs(skills): readonly is stripped from any non-system write, not only an update (#15382)
The published catalog told application authors that a non-system write has a readonly field stripped from an UPDATE payload. As of the 2026-09-03 ruling the engine applies the same strip on the create path, so the sentence understated the rule on exactly the write where an author is most likely to seed a protected column. Both files say 'any non-system write' now, and the automation skill names create_record beside update_record and the step warning that reports the drop. Paid inside the token ratchet by deleting 'silently' -- which the same ruling made false: the drop is reported through droppedFields and a step warning. Claude-Session: https://claude.ai/code/session_01ARYe3yQTQCUFm5qPYNgKaJ Co-authored-by: Claude <noreply@anthropic.com>
1 parent d53335e commit bda7b7c

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

skills/objectstack-automation/SKILL.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,9 @@ run reports success. `objectstack validate` names the offending template.
233233

234234
> **Writing a `readonly` field? Set `runAs: 'system'`.** `readonly: true`
235235
> governs the end-user surface: under the default `runAs: 'user'`, the engine
236-
> **silently strips** a `readonly` field from an `update_record` payload
237-
> — the step reports success but the value never lands. A flow that
236+
> **strips** a `readonly` field from any non-system write — `create_record` and
237+
> `update_record` alike — the step reports success but the value never lands,
238+
> and the drop is named in the step's warnings. A flow that
238239
> maintains a `readonly` field (approval stamps, conversion flags, SLA
239240
> markers, rollups) must run `runAs: 'system'`, the trusted-writer channel.
240241
> `os validate` / `os build` fail a `runAs:'user'` `update_record` that writes

skills/objectstack-data/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ export const Invoice = ObjectSchema.create({
271271
incoming changes when the predicate is `TRUE`.
272272
- **`readonly: true` governs the end-user surface, not trusted system writers.**
273273
A non-system write (REST/UI, and any `runAs:'user'` flow — the default) has
274-
the field **silently stripped** from an UPDATE payload; the write reports
274+
the field **stripped** from any non-system write; the write reports
275275
success but the value never lands. System-context writes —
276276
`runAs:'system'` flows, system hooks, seeds, imports, migrations — are exempt
277277
and DO write it. So the pattern "users can't edit this, but automation

0 commit comments

Comments
 (0)