Packages and userland
A package is versioned Luce source. The loader adds it to the application's ordinary module graph, where the compiler applies the same type, memory, and test rules as project source.
The project manifest
luce.yaml names the project root and exact package requirements. Root-relative dotted imports map to directories under that identity. Package resolution probes the supported local, store, shelf, and path locations. One unambiguous package with the requested version must be present.
A package on disk
luce.yamlname, exact version, and dependency requirementsmodule.lucordinary public/private source files reached by dotted importstests/*.lucordinary Luce test declarations discovered by the toolchainTermUI stays a package
termui ships with the release as a versioned package. Its components, layout constraints, drawing, event handling, and application lifecycle all pass through normal package loading and language compilation.
Application-scale examples
The current distribution boundary
The toolchain consumes exact package versions from configured local locations. Remote publication and compatible-version range selection remain future distribution work. Exact requirements currently make the chosen source identity deterministic.
Why examples are part of engineering
Small language specs isolate one behavior. Packages and applications exercise interactions across large branches, UI-model lifetimes, module resolution, test discovery, and public APIs. Running both levels catches local rule errors as well as failures that appear only when features compose.