quirl-contract
Canonical Quirl project documentation synced from crates/quirl-contract/README.md.
quirl-contract owns Quirl's versioned agent and package machine contracts.
It depends inward on quirl-core for ShellError and quirl-catalog for
semantic command facts. It has no Lua, UI, process, or CLI dependency.
The crate provides:
- deny-unknown agent catalog, context, manifest, and validation schemas;
- deterministic installed-content hashes and comprehensive structural schema fingerprints;
- relevance-ranked context selection under a documented token estimate;
- 4 MiB agent-document and 256 KiB
plugin.tomladmission limits enforced before parsing; - deny-unknown
plugin.tomlparsing and Quirl-version/capability checks; and - package public-command, Phase 2 contribution, source-audit reconciliation, and network-free publish-plan gates.
The CLI is responsible for adapting the generated Lua HOST_API into these
contracts, supplying trusted installed catalog/HOST_API hash anchors, reading
package files under equal or tighter limits, and using quirl-lua for
non-executing parse/lint checks. The owning crate rechecks contract byte limits
and portable package-entry syntax. This preserves the one-way dependency
graph: quirl-contract does not depend on the Lua layer. Validation never
executes Lua.