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: Identity

Identity · rule

type.auth_public_principal

Public route passes a caller it never reads.

Area 8, Identity; not declinable; the next step is usually the human's.

example
principal {    user: {        subject: Member.handle    }}authentication {    browser_session: {        cookie: "session"    }}type Handle = Text {    max_length: 40}entity Member {    id: Uuid    handle: Handle {        unique: true    }}type MemberView = Output {    handle: Handle}type MemberNotFound = Failure {    kind: FailureKind.not_found}query whoami(caller: Principal.user) fails MemberNotFound -> MemberView {    from: Member    where: Member.id == caller.id    missing: MemberNotFound}routes Members {    prefix: /members    GET /me {        authentication: RouteAuthentication.none        output: MemberView        run: whoami(current_principal.user)    }}
text
error: A route anyone may call passes `current_principal` --> main.jadpo:44:21   |44 |         run: whoami(current_principal.user)   |                     ^^^^^^^^^^^^^^^^^ no one is signed in here  reason: `authentication: RouteAuthentication.none` reads no credential, so the route has no caller to pass on, and nothing it runs may use one.  next: Remove `authentication: RouteAuthentication.none` so callers sign in, or stop passing `current_principal` (human)  rule: type.auth_public_principal  help: https://jadpo.dev/docs/errors/type.auth_public_principalcheck failed: 1 error, 1 file

Markdown for agents: /docs/errors/type.auth_public_principal.md.Built from Jadpo main at a707efb.