Skip to main content

The test

If Sense can be replaced by Python + SDK + framework without losing fundamental capabilities, its language-level abstraction is not strong enough.
Every feature added to Sense should be able to answer: what does this make impossible, or at least much harder, to do by accident in a plain library? Answer passes — a library can’t stop you from treating an AI answer as a fact, but the type system can. Action’s prepare→verify→commit passes — a library can’t stop a decorated function from also just running immediately if someone doesn’t call it the “right” way; the interpreter can refuse to run it any other way. A feature that’s just a convenience wrapper around what a library already does cleanly should probably be a library, not a language feature.

What Sense explicitly refuses to become

Bolting agent/Answer/action onto Python’s existing semantics (mutable-everything, no capability model, no distinction between a pure function and a side-effecting one) doesn’t get you Sense’s guarantees — it gets you Python with extra vocabulary that nothing enforces.
An SDK’s job is to make one vendor’s API pleasant to call. Sense’s ask(...) deliberately never exposes which model, vendor, or even whether an LLM was involved at all — that’s a runtime routing decision, the same way sort() doesn’t expose which algorithm ran.
Frameworks compose existing primitives from an underlying language that doesn’t understand them. Sense’s bet is that some of those primitives (uncertainty, staged effects, capability scoping) belong at the language level instead, where they can actually be enforced rather than merely offered.
Sense is not primarily about generating good prompts. ask(prompt) takes a plain string; prompt engineering is orthogonal to what Sense is trying to solve.
Workflow engines orchestrate steps a human already fully specified. Sense’s eventual “the runtime constructs a plan under real constraints” idea (not yet built — see the computational model) is a different problem than sequencing pre-defined steps.
Sense has no special affinity for conversational UIs. ask(...) is a general reasoning primitive usable anywhere a value is needed, not a dialogue-management construct.
If every Sense construct just maps 1:1 onto an existing REST call with extra syntax, the language isn’t adding anything an OpenAPI client generator couldn’t. Sense’s constructs (Answer, Action states, scoped policy) don’t correspond to any single API shape — they’re runtime concepts the interpreter itself understands and enforces.
Sense’s deterministic core (arithmetic, control flow, arrays, functions) runs with zero network access and zero AI involvement, by design — see Values & Types. AI is an opt-in capability layered on top, never an ambient, invisible dependency of ordinary code. A Sense program with no ask/model/agent in it is exactly as offline and deterministic as an equivalent Python script.

Continue

Design order

Why syntax came after semantics were settled.

Comparison

Sense against Python and other languages, feature by feature.