Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo
Reference: Policy

Policy · rule

policy.role_field_create_forbidden

Create sets the user field its grant needs from the request, not the caller.

Area 9, Policy; not declinable; the next step is usually the agent's.

A note's create: names only owner_id, so a note is only ever created by its owner, and owner_id is set from the caller rather than the request:

example
type Handle = Text {    max_length: 40}entity User {    id: Uuid    handle: Handle {        unique: true    }}principal {    user: {        subject: User.handle    }}type NoteText = Text {    max_length: 200}entity Note {    id: Uuid    owner_id: User.id {        on_delete: OnDelete.cascade    }    text: NoteText    policy: {        create: [owner_id]        read: [owner_id]    }}type CreateNote = Input {    owner_id: User.id    text: NoteText}action create_note(input: CreateNote) fails UserNotFound -> Note {    return attempt Note.create {        set: {            owner_id: input.owner_id            text: input.text        }    }}
text
error: `create_note` sets `Note.owner_id` from the request, not the caller --> main.jadpo:43:23   |43 |             owner_id: input.owner_id   |                       ^^^^^^^^^^^^^^ not the caller  reason: `Note`'s `create:` names only `owner_id`, so a `Note` is only ever created by the caller it points at. Set from the request, the create would be refused for every value but the caller's own, so it is set from the caller: the `id` of a `Principal.user` the action takes.  next: Take the caller as a parameter typed `Principal.user`, and set `owner_id` to its `id` (agent)  rule: policy.role_field_create_forbidden  help: https://jadpo.dev/docs/errors/policy.role_field_create_forbiddencheck failed: 1 error, 1 file

The fix takes the caller, create_note(owner: Principal.user, input: CreateNote), and sets owner_id: owner.id.

Markdown for agents: /docs/errors/policy.role_field_create_forbidden.md.Built from Jadpo main at a707efb.