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

ErrorsProject layout and modules · rule

naming.generic_name

On this page

A domain or library is called something generic, such as helpers or utils, that says nothing about what it holds.

Area 1, Project layout and modules; not declinable; the next step is usually the agent's.

Why Jadpo refuses it

A domain's or library's name appears in every call into it, as in rounding.half_even(x) or inventory.reserve_stock(...). A name that says what it holds tells the reader what the call does. common, core, helpers, misc and utils say nothing, and they collect unrelated code over time.

What it looks like

main.jadpo:

example
type Stock = Int {    min: 0}library helpers {    function add_holdback(subtotal: Stock) -> Stock {        return subtotal    }}
jadpo checkcheck failed: 1 error, 1 file

error helpers is too generic for a library

--> main.jadpo:5:9

  |5 | library helpers {  |         ^^^^^^^ says nothing about what it holds
reason
Domains and libraries are named after what they hold, because the name appears in every call; common, core, helpers, misc and utils say nothing.
next
Rename the library after what its functions do (agent)
rule
naming.generic_name
help
https://jadpo.dev/docs/errors/naming.generic_name

(agent) at the end of the next: line means your coding agent can make the fix itself: it can name a library after what its functions do.

A domain called utils is reported at its first file:

domains/utils/actions/tidy.jadpo:

example
action tidy() -> Unit {}
jadpo checkcheck failed: 1 error, 2 files

error utils is too generic for a domain

--> domains/utils/actions/tidy.jadpo:1:1

  |1 | action tidy() -> Unit {}  | ^ says nothing about what it holds
reason
Domains and libraries are named after what they hold, because the name appears in every call; common, core, helpers, misc and utils say nothing.
next
Rename domains/utils/ after the business area it covers (agent)
rule
naming.generic_name
help
https://jadpo.dev/docs/errors/naming.generic_name

This project has no commit yet, so no one depends on the name and your coding agent can choose one. Once the project has a commit, the next step ends (human), which tells your coding agent to stop and ask you which fix you want, because the choice is yours to make: a domain is a boundary other code is shaped around, so a new domain's name needs your acceptance.

How to fix it

If the library's functions share one job, name it after that job. Here they hold stock back:

example
library holdback {    ...}

Calls now read holdback.add_holdback(subtotal), which says where the function lives and what it is about.

When its functions do unrelated jobs, split them into libraries named after each job, such as rounding and pricing.

If it is a domain, rename its folder after the business area it covers, such as ordering or planning, and change each use utils/... line and utils. call to match:

shell
git mv domains/utils domains/housekeeping

Until jadpo domain rename is built, a renamed domain shows as a new one, so the change needs your acceptance, housekeeping: DomainChange.created.

Markdown for agents: /docs/errors/naming.generic_name.md.Built from Jadpo main at aee2e8f.