Softanza
StartFrançais
Softanza
Language & intelligence

Agents & conversation

A governed inversion of LangChain: the LLM proposes and never acts; safe-world rehearse-then-commit.

4 Strong · 4 Solid · 3 Partial · 1 Emerging

Measured against: LangChain · AutoGen · Semantic Kernel · Folders: base/agentic(opens in a new tab) · base/conversation(opens in a new tab) · For programmers: this area's reference

an agent may propose anything inside the circle; only a person carries a plan across the line
an agent may propose anything inside the circle; only a person carries a plan across the line. drawn on 2026-10-01 by the site's script tools/areas-figurative.ring, run inside the library at commit 0e72e2e2c · the source(opens in a new tab)

Rethought from first principles

What Softanza kept from what works, and what it rethought, as the library wrote it down in its design documents and narrations.

The Softanza waySoftanza does not try to build a safe agent; it builds a safe world and lets ordinary agents work inside it.

Kept from the best practice

  • The familiar agent shape is kept: a loop with a goal, tools, memory and skills. The usual vocabulary maps onto it one to one. source(opens in a new tab)
  • A change is first a plan, validated and reviewed, then executed by another actor with an audit trail. This is the familiar review-before-commit discipline. source(opens in a new tab)
  • A person stays in the loop. Every refusal can reach a human checkpoint, which keeps its context and expires if nobody answers. source(opens in a new tab)

Rethought

  • An agent rehearses in a virtual workbench with no wire to reality, so it cannot escape. Only a plan leaves, and a separate committing actor runs it. source(opens in a new tab)
  • The mind is programmatic by default. A language model is one pluggable faculty that may propose but never act, so no unchecked suggestion becomes an action. source(opens in a new tab)
  • An agent must declare what it covers and how undoable its acts are. Otherwise it is refused before its first tick, when refusing still costs nothing. source(opens in a new tab)
  • Softanza asks rather than guesses. The gap between a declared goal and current knowledge generates the next question, and each answer is checked before admission. source(opens in a new tab)

A deliberate inversion of LangChain and AutoGen: a governed, declarative substrate where an LLM only proposes and can never act. It is strongest exactly where the peers are weakest — safety, governance, determinism — and deliberately absent exactly where they lead: LLM-driven tool selection, autonomous planning, live multi-agent chat, and RAG.

What a crafter does with it, and what stands out

  • safe-world binding: a genuine category-of-one
  • a provable governance graph (five static invariants)
  • agents as .pia files judged at load
  • a Zig-owned tick loop with no callback into Haro

What is owed

  • LLM-driven tool selection, gated
  • wire RAG into agents
  • plan negotiation (Receive / Revise)
  • live multi-agent orchestration

The Softanza way, run

What Softanza does differently in this area, shown by code taken from its narrations and guards, and run for this page.

A composition where a language model reaches an action directly, with no guardian between them, is judged unsound before anything runs.

Softanza
oBad = new stzAgentGraph("mailer-bad")
oBad.AddLLMActor("writer")
oBad.AddEffect("send")
oBad.Proposes("writer", "send")
chk("llm-straight-to-effect is NOT sound", oBad.IsSound() = 0)
chk("multiple invariants fire", len(oBad.Violations()) >= 3)
chk("Explain names the refusal", len(StzFind("REFUSED", oBad.Explain())) > 0)
Output
  [OK] llm-straight-to-effect is NOT sound
  [OK] multiple invariants fire
  [OK] Explain names the refusal

run on 2026-10-01 21:17 inside the library at commit 0e72e2e2c; taken from base/test/agentic/agentgraph_narrated.ring(opens in a new tab)

The articles of this area (3)

The lanes, one by one

Lanes and their notes are quoted as they were read at the source, on Read from the source on 2026-09-16.

Safe-world binding (sandboxed execution)
Strong
stzAgentWorkbench rehearses into a virtual-filesystem twin; a separate committing actor executes the plan under three gates; the disk provably does not movestzAgentWorkbench / GenerateUpdatePlan(); test/agentic
Guardrails & governance (capability lattice)
Strong
Five statically-proven invariants feed the one CI gate; no-llm-effectful enforced at two doors (graph construction and engine registration)stzAgentGraph / stzAgentRule
Agent definition & lifecycle (.pia, judged-at-load)
Strong
An agent is a closed, versioned .pia file judged at LOAD by a sequence of courts; a defect is a refusal, one per gate (14 refusal codes)stzAgentDeclaration / stzAgentFolder
Tick / scheduler loop
Strong
agentloop.zig: Zig owns time, Haro runs Cycle(), no callback into the Haro VM; determinism proven as a test; 15 Zig unit testsagentloop.zig / bridge_agentloop.zig
Structured output (LLM proposals)
Solid
llm_actor proposes via stzLLMFunction + stzOutputSchema, compiled to GBNF so invalid tokens are unemittable; a proposal is a candidate, never an effectstzLLMFunction / stzOutputSchema
Conversation management
Solid
stzConversation: goal-driven loop in a stzKnowledgeGraph, questions born from gaps, governed Admit, persists as .zcnv; no intent classificationstzConversation / stzGoal; test/conversation
Memory & state
Solid
stzAgentMemory over stzKnowledgeGraph: Learn/Recall/Forget/Prove over triples, persistable; no buffer/summary/vector memory varietystzAgentMemory
LLM function & prompt management
Solid
stzLLMFunction: typed returns, call budget, retries, goldens, template prompt, real GGUF backend; no chain/pipeline ecosystem or prompt registrystzLLMFunction (AddGolden/RunGoldens)
Multi-agent orchestration
Partial
stzAgentGraph composes roles and edges and proves soundness; no runtime multi-agent conversation orchestrator, native roster one-fifth wiredstzAgentGraph
Tools / function-calling
Partial
A skill's host-function clause binds a Haro function under an execution posture; no LLM-driven tool selection -- a deliberate refusal
Planning & reasoning
Partial
Deterministic perceive->decide->act to a fixpoint (stzPIAgent.Pursue, RunToQuiet); no LLM-driven planning, the planner agent reservedstzPIAgent
RAG / retrieval
Emerging
Not wired into the agent tier; stzSemanticIndex lives on the Neural tier and is not connected to agent proposal or memory