Wunderspec is a Python DSL for writing and checking executable specifications.
Distributed systems often fail due to unforeseen issues: message reordering, race condition, stale observations, retry behavior, crashes and restarts, network outages, vibe code. Adding more example tests is often not enough to find these bugs before they make it to production. Specifications written in Wunderspec surface these issues early, so that teams find design flaws before they become production incidents.
This is the open-core distribution.
📋 Wunderspec in 5 minutes: the Wunderspec in Five Minutes gives you a quick overview of the core concepts.
📋 Cheatsheet: the Wunderspec cheatsheet summarizes the DSL and CLI in a few pages — keep it open while you work.
💡 Using Quint? Try this command:
uv tool install wunderspec wunderspec convert --from=spec.qnt --to=spec.py --main=main
Follow Bob in his Wunderspec adventure. There, Bob writes a specification of a write-ahead log, finds a bug, replays the counterexample and fixes the specification.
Using uv:
uv tool install wunderspecAfter installation, the CLI is available:
wunderspec --helpIf you want to add Wunderspec as a dependency, just type:
uv add wunderspec
uv syncThis open-core package includes the features marked ✅ in the Open Core column. Premium-only command names stay visible for discoverability, but those commands are not included in this package.
| Feature | Open Core | Premium |
|---|---|---|
| Symbolic expression evaluator | ✅ | ✅ |
wunderspec lint |
✅ | ✅ |
wunderspec run |
✅ | ✅ |
wunderspec replay |
✅ | ✅ |
wunderspec convert |
✅ | ✅ |
wunderspec check |
✅ | ✅ |
wunderspec with-tlc |
✅ | ✅ |
wunderspec with-apalache |
✅ | ✅ |
wunderspec fuzz |
❌ | ✅ |
wunderspec rust |
❌ | ✅ |
wunderspec lean |
❌ | ✅ |
- Release tag:
v0.136.6 - Source commit:
220f8984c8ea99a7debba9a0866743ede63bd482
See tests/README.md for the development test log captured at release time.
Changes since public release v0.136.4.
Fix examples in the CI
Wunderspec is distributed under the Functional Source License, Version 1.1, with an Apache 2.0 future license (FSL-1.1-ALv2). See LICENSE.
