Is Sense production-ready?
Is Sense production-ready?
No. It’s a real, running interpreter with a genuine test suite, but Phase 5
(developer experience: package manager, language server, debugger,
formatter) hasn’t started — see Roadmap. Treat it as an active
language-design project you can actually run programs in, not a finished
product.
Why does the reference implementation use Python?
Why does the reference implementation use Python?
Speed of iteration while the language design itself is still moving. A
tree-walking interpreter in Python is the fastest thing to change when a
semantic decision turns out to be wrong — and several already have (see
Design Order for the syntax rewrite that
happened for exactly this reason). A faster, compiled runtime is explicitly
future work, not a rejected idea.
Does ask() call a real LLM?
Does ask() call a real LLM?
Not in most examples on this site — the majority use
inference("mock", ...), a deterministic, offline provider, on purpose
(see Model, Ask & Answer). Real providers
do exist — Anthropic and OpenAI, behind the same one function,
inference(provider, ...)
— and a handful of examples use one when an API key is set, skipping
gracefully otherwise so the corpus stays runnable offline. A local model
(Ollama, llama.cpp) isn’t built yet; the ModelProvider interface exists
specifically so adding one won’t change how ask() or Answer behave
once it lands.Can Sense call out to Python libraries?
Can Sense call out to Python libraries?
Yes —
import python "module" reaches straight into any installed
Python package, since Sense’s own interpreter is itself written in
Python and runs in the same process; no FFI or serialization involved.
Wrap a call in a Sense action and it gets the full prepare → verify →
commit treatment regardless of what the underlying Python code does. See
Python Interop.Why no braces, semicolons, or 'fn'/'let'?
Why no braces, semicolons, or 'fn'/'let'?
Because the goal is a language simpler than Python, not a reskin of it —
and Sense’s audience explicitly includes people without a formal
programming background and AI systems generating code, both of whom
benefit more from fewer symbols and fewer special-case rules than from
familiarity with C-family conventions. See
Design Order for the full story, including the
one time this got decided by parser convenience instead of on purpose, and
what it cost to fix.
What happens if I type '{', ';', or '->' out of habit?
What happens if I type '{', ';', or '->' out of habit?
You get a specific error message pointing at the actual replacement
(indentation instead of braces, a newline instead of a semicolon,
returns
instead of ->) rather than a generic parse failure. This is aimed
directly at people — and LLMs — whose muscle memory defaults to other
languages.Is pause/resume 'real' concurrency?
Is pause/resume 'real' concurrency?
No, and this is worth being precise about: it’s cooperative hand-off
between exactly two logical contexts using real OS threads as the
mechanism, not a scheduler running multiple agents at once. Only one
Sense thread is ever actually executing at any instant. See
Pause & Resume for the full design and its
honest limits.
Why does policy default to allow instead of deny?
Why does policy default to allow instead of deny?
So that ordinary scripts — and any action with no
requires clause —
stay completely unaffected by the existence of the policy system. Only an
action that explicitly names a capability can ever be denied, and only
once some policy actually says so. A stricter default-deny sandbox is real
future work (see Policy and the Roadmap),
deliberately not the default today.How do I report a problem or suggest a change?
How do I report a problem or suggest a change?
See Contributing for how the codebase is
organized, or open an issue/PR against the repository this documentation
ships alongside.
Still have a question?
Philosophy
The deepest “why” questions.
Roadmap
What’s built vs. planned, in detail.

