> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sensecode.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Common questions about Sense, answered directly.

<AccordionGroup>
  <Accordion title="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](/roadmap). Treat it as an active
    language-design project you can actually run programs in, not a finished
    product.
  </Accordion>

  <Accordion title="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](/philosophy/design-order) for the syntax rewrite that
    happened for exactly this reason). A faster, compiled runtime is explicitly
    future work, not a rejected idea.
  </Accordion>

  <Accordion title="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](/ai-native/model-ask-answer)). Real providers
    do exist — Anthropic and OpenAI, behind the same one function,
    [`inference(provider, ...)`](/ai-native/model-ask-answer#real-providers-inference-provider-model-id)
    — 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.
  </Accordion>

  <Accordion title="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](/language/python-interop).
  </Accordion>

  <Accordion title="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](/philosophy/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.
  </Accordion>

  <Accordion title="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.
  </Accordion>

  <Accordion title="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](/ai-native/pause-resume) for the full design and its
    honest limits.
  </Accordion>

  <Accordion title="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](/safety/policy) and the [Roadmap](/roadmap)),
    deliberately not the default today.
  </Accordion>

  <Accordion title="How do I report a problem or suggest a change?">
    See [Contributing](/reference/cli#contributing) for how the codebase is
    organized, or open an issue/PR against the repository this documentation
    ships alongside.
  </Accordion>
</AccordionGroup>

## Still have a question?

<CardGroup cols={2}>
  <Card title="Philosophy" icon="lightbulb" href="/philosophy/thesis">
    The deepest "why" questions.
  </Card>

  <Card title="Roadmap" icon="map" href="/roadmap">
    What's built vs. planned, in detail.
  </Card>
</CardGroup>
