Rendered from docs/obligations/0027-what-optional-holds-under-the-package-root.md in the Headwater corpus. Every document on this half of the site is typed by the taxonomy the descriptor names: corpus.json.

What optional holds under the package root

Context

The grammar of $package.optional.forbids is settled and the shape of what it reads is not. Spec 7 declares no optional block in the package manifest.

Obligation

So nothing says whether the library is one flat set of named declarations, or one set for each block. The flat reading needs a name to be unique across blocks, and it lets a reference resolve on its own. The other reading makes a reference resolvable only against the address that receives it, which costs explain the ability to report what a reference reads.

This is the fifth surface that has a required declaration and no stated form.

Discharge

The resolver refuses a $package reference and names this gap as the reason, rather than report a node that does not exist. What closes this is a statement of the shape in spec 7, and nothing else reaches it.