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

HTTP · rule

route.output_required

Route has no output:.

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

A route shows its contract without opening what it runs:

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    }}routes Memos {    prefix: /memos    POST / {        input: AddMemo        run: add_memo(input)    }}
text
error: `POST /memos` has no `output:` --> main.jadpo:24:5   |24 |     POST / {   |     ^^^^^^ no `output:`  reason: A route shows its contract without opening what it runs: `output:` names what it sends, exactly what `add_memo` returns (`MemoView`).  next: Add `output: MemoView` (agent)  rule: route.output_required  help: https://jadpo.dev/docs/errors/route.output_requiredcheck failed: 1 error, 1 file

What returns Unit sends nothing, so the route answers 204 rather than naming an output::

example
type Memo = Text {    max_length: 200}type AddMemo = Input {    text: Memo}action check_memo(input: AddMemo) -> Unit {    assert input.text == input.text}routes Memos {    prefix: /memos    POST /checks {        input: AddMemo        run: check_memo(input)    }}
text
error: `POST /memos/checks` has no `output:` --> main.jadpo:16:5   |16 |     POST /checks {   |     ^^^^^^^^^^^^ no `output:`  reason: A route shows its contract without opening what it runs: `check_memo` returns `Unit`, so the route sends nothing, which `status: SuccessStatus.no_content` says, answering 204 with no body.  next: Add `status: SuccessStatus.no_content` (agent)  rule: route.output_required  help: https://jadpo.dev/docs/errors/route.output_requiredcheck failed: 1 error, 1 file

Markdown for agents: /docs/errors/route.output_required.md.Built from Jadpo main at a707efb.