One writer. Atomic firings.
A firing commits consumed facts, new facts, effects, and terminal state in one transaction. An instance never observes half a decision.
A typed coordination language that keeps deterministic policy separate from fallible effects—and makes authority, information flow, failure, history, and revision first-class.
rule draft when Ticket as t when writer is available => { tell writer "Draft a fix for {{ t.id }}" with access [repo] then { askHuman choices ["ship", "hold"] "Release the reviewed patch?" } }
Rule evaluation is deterministic and side-effect free. Agent turns, model coercions, timers, commands, human asks, messages, and child workflows become durable effects with stable idempotency keys.
A firing commits consumed facts, new facts, effects, and terminal state in one transaction. An instance never observes half a decision.
Closed-domain cases must be exhaustive. Effect failures are typed; an unobserved terminal failure auto-fails instead of leaving a silent zombie.
Effect identity includes program version, revision epoch, rule, binding path, and trigger identity. Recovery and re-evaluation dedupe against the same request.
WhippleScript does not claim general termination. It rejects specific unbounded shapes and forces the important control-flow and data-flow obligations into the program.
Recursive expansion and invocation graphs are rejected. Agent capacity, leases, counters, timeouts, and work-loop structure make concurrency and waiting explicit.
Fact reads and writes are checked, terminal payloads must match their contract, and finite cases cannot silently omit a variant.
complete or fail.The checker flags missing terminals, unsafe reads, unhandled failures, shadowed branches, and non-convergent structures. Liveness warnings stay honest where a proof is not available.
A signed envelope labels real resources on confidentiality and integrity axes. The checker derives provenance through facts, rules, workflow boundaries, prompts, tool results, and provider context.
Combining sources joins compartments. Unaccountable inputs fall back to declared labels.
Facts, terminals, channels, providers, child workflows, model prompts, and tool results.
Only source-marked, schema-bounded declassify or endorse crossings can pass a signed grant.
The event log is append-only. Facts are immutable and content-keyed. File bodies are content-addressed; “current state” is a fold over the lineage.
whip revise compatibility-checks a candidate and records an activation event plus revision epoch. Existing work retains its original program version; future commits use the new one.
whip trace --checkThe published guarantees point to their carriers: Maude executable models, Lean proofs for reader-set algebra, narrowing and non-interference, and TLA+/Apalache models for lifecycle and bounded-safety properties.