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: Project layout and modules

Project layout and modules

What is built: Project layout and modules

The compiler builds the decided layout, with each rule's real output under Errors.

Feature Status
Root, domains and their folders Built: a file where the layout has no place for it is layout.unknown_location, and a declaration in the wrong folder layout.wrong_folder; a folder or file with no app.jadpo above it is checked as loose files. Not built yet: jadpo domain rename, split and merge; the documents capability, so a file in documents/ is layout.unknown_location until it is.
Files and names Built: one primary declaration per file, named after it; names unique project-wide; the round-trip and folded-collision rules, with the exception for a type folding to its callable's name.
Names per domain Partly built: private functions and types unique only within their domain, each domain's code reading its own; their identity keys carrying the domain, with promotion to shared/ writing a registry line; semantic.duplicate_declaration saying copy or clash and listing the names in use with the same words. jadpo rename is not built yet (Commands for looking into and changing code).
Order independence Built: declaration and file order never matter.
Domains, public and calls Built: owner-qualified calls and per-declaration public, with visibility.private_cross_domain, visibility.public_not_allowed and visibility.public_unused.
Reserved words Built: a reserved word can't name anything.
Comments Built: // and /// documentation comments.
Similar helpers Built: library.similar_exists, a declinable error. Not built yet: jadpo impact.
Declinable errors Partly built: no warning severity; the decline <rule>: "<reason>" line with decline.unused, decline.not_declinable and decline.no_reason; jadpo declines list and clear; the editor's "Decline with a reason" and "Remove decline". Not built yet: jadpo approval (Records and manifest) and the date rule for expired feature flags.
Constants Built: constant as a reserved word and a declaration placed and shared as helper functions are, a private one unique within its domain, constant.similar_exists, and a top-level var pointed at constant (Constants).
Imports Built: use <folder> { Names } and use <domain>, with import.missing, import.unknown, import.unused, import.unneeded and import.duplicate; jadpo fmt adds, removes and sorts imports, jadpo fmt --layout makes promotion moves, and go to definition works from every use of a name, a use line's included.
A file holds only what its primary declaration uses Built: layout.unused_declaration for a supporting declaration the primary declaration doesn't use, directly or through one another.
Definition before use Built: jadpo fmt writes each file's declarations before the first one that uses them, and jadpo fmt --check fails on a file out of that order.
Referenced assets Not built yet: layout.asset_unreferenced waits for the ways Integrations and Built-in services refer to files that aren't Jadpo.
Jadpo version Built: application { jadpo: "0.1" }, with toolchain.version_newer refusing a project on a later line, toolchain.version_older one on an earlier line, each naming the release to install, and toolchain.version_invalid; the installed jadpo runs the release the line or jadpo.lock's pin names (Which jadpo runs). jadpo new writes the line of the jadpo that ran it.
Packages Built: the root packages/ and jadpo.lock, shared/providers/, packages checked as shared/ is, use packages/<name>, and the reachable-from-public rule (visibility.public_reaches_private) in domains and packages; Integrations records the choices.

Markdown for agents: /docs/project-layout-and-modules-built.md.Built from Jadpo main at a707efb.