Protocol specifications as Python code
Project description
Wunderspec
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.
📋 Cheatsheet: the Wunderspec cheatsheet summarizes the DSL and CLI on a single page — keep it open while you work.
1. Wunderspec in Action
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.
2. Installation
Using uv:
uv add wunderspec
After installation, the CLI is available:
wunderspec --help
3. Features
This 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 |
❌ | ✅ |
4. Release Provenance
- Release tag:
v0.129.1 - Source commit:
604d6a23a444006bb67b14e0728df07711d3facb
See tests/README.md for the development test log captured at release time.
5. License
Wunderspec is distributed under the Functional Source License, Version 1.1, with an Apache 2.0 future license (FSL-1.1-ALv2). See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wunderspec-0.129.1.tar.gz.
File metadata
- Download URL: wunderspec-0.129.1.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fcef11d56428adb0fd914b3b7e08eb4e1260189f2f23aed0d7153938d0728f6
|
|
| MD5 |
ab480beea940910d8f7d3f56e2efa028
|
|
| BLAKE2b-256 |
b25d7bb47f90d7d319c8fae349c2e68be73de66122019617e6d5defc7d66e4ed
|
Provenance
The following attestation bundles were made for wunderspec-0.129.1.tar.gz:
Publisher:
publish.yml on wunderspec/wunderspec
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wunderspec-0.129.1.tar.gz -
Subject digest:
3fcef11d56428adb0fd914b3b7e08eb4e1260189f2f23aed0d7153938d0728f6 - Sigstore transparency entry: 1828422821
- Sigstore integration time:
-
Permalink:
wunderspec/wunderspec@86e5c091d8d520ffcb41f564d4bd428d8191ed1b -
Branch / Tag:
refs/tags/v0.129.1 - Owner: https://github.com/wunderspec
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@86e5c091d8d520ffcb41f564d4bd428d8191ed1b -
Trigger Event:
push
-
Statement type:
File details
Details for the file wunderspec-0.129.1-py3-none-any.whl.
File metadata
- Download URL: wunderspec-0.129.1-py3-none-any.whl
- Upload date:
- Size: 256.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a29d0e8226d1ff07a4ae1cac27492ce4e2ccd33a1dfc124ee1c580b9e435c79
|
|
| MD5 |
08d8c44ba45ac673f4a6106ca126bc76
|
|
| BLAKE2b-256 |
9240bcf9b290900d59d2640011df841becd5d698677222de8789206515cd90c1
|
Provenance
The following attestation bundles were made for wunderspec-0.129.1-py3-none-any.whl:
Publisher:
publish.yml on wunderspec/wunderspec
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wunderspec-0.129.1-py3-none-any.whl -
Subject digest:
5a29d0e8226d1ff07a4ae1cac27492ce4e2ccd33a1dfc124ee1c580b9e435c79 - Sigstore transparency entry: 1828422856
- Sigstore integration time:
-
Permalink:
wunderspec/wunderspec@86e5c091d8d520ffcb41f564d4bd428d8191ed1b -
Branch / Tag:
refs/tags/v0.129.1 - Owner: https://github.com/wunderspec
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@86e5c091d8d520ffcb41f564d4bd428d8191ed1b -
Trigger Event:
push
-
Statement type: