Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 5 Nov 2026. What's built · Install 0.3.0
jadpo
ReferenceErrors

ErrorsHTTP · rule

route.header_duplicate

Two input fields read the same header.

Area 7, HTTP; not declinable; the next step is usually the agent's.

Header names are compared without case:

example
type Memo = Text {    max_length: 200}type MemoId = Uuid {}type AddMemo = Input {    text: Memo}type MemoView = Output {    text: Memo}action add_memo(input: AddMemo) -> MemoView {    return MemoView {        text: input.text    }}type TaggedMemo = Input {    text: Memo    first: Memo {        header: "X-Request-Tag"        optional: true    }    second: Memo {        header: "x-request-tag"        optional: true    }}action add_tagged_memo(input: TaggedMemo) -> MemoView {    return MemoView {        text: input.text    }}policy {    actions: {        add_tagged_memo: [Access.public]    }}routes Memos {    prefix: /memos    POST / {        authentication: RouteAuthentication.none        input: TaggedMemo        output: MemoView        run: add_tagged_memo(input)    }}
jadpo checkcheck failed: 1 error, 1 file

error Header x-request-tag is read twice

--> main.jadpo:28:17

   |24 |         header: "X-Request-Tag"   |                 --------------- first read here28 |         header: "x-request-tag"   |                 ^^^^^^^^^^^^^^^ read again
reason
Header names are compared without case, so two fields reading one header would always hold the same value.
next
Remove one of the fields (agent)
rule
route.header_duplicate
help
https://jadpo.dev/docs/errors/route.header_duplicate

Markdown for agents: /docs/errors/route.header_duplicate.md.Built from Jadpo main at aee2e8f.