Feature Gates
The Reasoning Engine and all Reason Commands are behind a Cargo feature flag: --features reason. This keeps the default binary lean and the dependency tree small.
(given reason-feature-optional)
(given graceful-degradation)
How it works
[features]
default = []
reason = ["dep:spindle-core", "dep:spindle-parser"]
Building without the flag produces a binary that handles concepts/Wikilinks, graph queries, Search Command, Check Command, and the TUI — everything except reasoning.
Graceful degradation
When a user runs zetl reason on a binary built without the feature, they get a clear error message explaining how to rebuild with --features reason. This is better than a confusing “unknown command” error.
Why not always include it?
spindle-coreandspindle-parseradd compile time and binary size- Not every user needs concepts/Defeasible Reasoning
- concepts/Spindle Lisp is a niche feature — progressive disclosure serves users better
Progressive disclosure
; Feature gates + graceful degradation = progressive disclosure
(normally r-progressive-disclosure
(and lean-default-binary good-developer-experience)
progressive-disclosure)
See also: ADR-001 Rust, Reasoning Engine, Reason Commands, Install