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.field_widens_entity

Field policy lets in someone its record's grants don't.

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

A field's policy: only takes away from its record's grants; here anyone signed in could read a note's summary when only its owner may read the note:

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    summary: NoteText {        policy: {            read: [Access.authenticated]        }    }    policy: {        read: [owner_id]    }}
text
error: `Note.summary` lets `Access.authenticated` read it, which `Note` doesn't --> main.jadpo:30:20   |30 |             read: [Access.authenticated]   |                    ^^^^^^^^^^^^^^^^^^^^ not in `Note`'s `read:`  reason: A field's `policy:` only takes away from its record's grants: it narrows who may read the field, and never lets in anyone `Note`'s `read:` doesn't, which names `owner_id`.  next: Remove `Access.authenticated` from `summary`'s `read:` (agent)  rule: policy.field_widens_entity  help: https://jadpo.dev/docs/errors/policy.field_widens_entitycheck failed: 1 error, 1 file

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