Modules and Separate Compilation

use "path" imports a source module or a source-elided .sdi interface. Declarations are private unless marked pub.

use "math_library"

pub struct measurement {
    pub value: i64
}

pub fn double(value: i64) -> i64 {
    value * 2
}

The clean compiler resolves relative source/interfaces, local manifest path dependencies, and installed target/ABI-qualified packages. .sdi preserves public types, generic templates/common instances, effects, ownership, provenance, destructor/clone contracts, dependency hashes, target, and ABI identity. Private implementation changes can leave consumer identity stable; public semantic/ABI changes invalidate it.

Package layout

package/
├── seed.toml
├── src/main.sd
├── src/lib.sd
└── tests/*.sd

The repository launcher supports new, check, format, incremental build, run, test, doc, lint, package commands, LSP, and publish --check. Local compiled libraries can be installed using the direct compiler's --install-library, --install-interface, and --package options. Dynamic seed dependencies are the hosted default; --static selects installed static archives.

seed pkg resolve/add/update/prune provides deterministic semantic-version selection, seed.lock, SHA-256 immutable objects, HTTPS/file registries, path/git overrides, offline reuse, atomic publication, and defensive archive extraction. Resolved sources are exposed under .seed/deps; compiled artifacts remain target/ABI-qualified in the compiler library store. Actual remote publication is deliberately separate; seed publish --check validates a package locally without executing unrestricted build scripts.

Do not treat legacy Grove names or llvm-v1 built-ins as automatically visible. An ordinary library API exists only when imported source/.sdi declares it.