Skip to content

Commit d78dcba

Browse files
author
Bran H
committed
Initial commit: Simplex v0.3 specification with GitHub Pages site
0 parents  commit d78dcba

39 files changed

Lines changed: 7964 additions & 0 deletions

.gitignore

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# IDE and editor
2+
.idea/
3+
.vscode/
4+
*.swp
5+
*.swo
6+
*~
7+
8+
# Claude Code
9+
.claude/
10+
11+
# Go
12+
lint/bin/
13+
lint/coverage.out
14+
lint/coverage.html
15+
16+
# OS
17+
.DS_Store
18+
Thumbs.db
19+
20+
# Build artifacts
21+
*.exe
22+
*.dll
23+
*.so
24+
*.dylib
25+
26+
# Jekyll
27+
_site/
28+
.sass-cache/
29+
.jekyll-cache/
30+
.jekyll-metadata
31+
Gemfile.lock

1-pager.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Simplex
2+
3+
A workflow specification language for autonomous agents.
4+
5+
An observed trend in AI development is the creation of new programming languages designed specifically for LLM code generation. The premise is reasonable. LLMs make syntax errors and struggle with operator precedence, so cleaner languages with unambiguous syntax, mandatory testing, and minimal keywords should help.
6+
7+
However, it addresses a problem that LLMs largely do not have.
8+
9+
LLMs are excellent at syntax. They've seen billions of lines of code in every language. They rarely struggle with semicolons, brackets, or operator precedence. What they struggle with is understanding intent, constraints, and edge cases. A new language with cleaner syntax addresses the easy part while leaving the hard part, specification, entirely in natural language prompts.
10+
11+
The real bottleneck lies not in code generation, but in specification: expressing what we want clearly enough for autonomous systems to act on without constant clarification.
12+
13+
## Inverting the Problem
14+
15+
Rather than making code easier for LLMs to write, what if we made specification easier for humans to write, consistent across teams in large organizations, and rigorous enough for LLMs to act on without clarification?
16+
17+
Humans will always be the specifiers. We know what we want to build. The question is how to express that knowledge in a form that autonomous agents can execute reliably over hours or days without human intervention.
18+
19+
Natural language tends to be too ambiguous for reliable autonomous execution, while programming languages are too prescriptive. What seems to be needed is something in between: a specification language that captures intent and constraints without dictating implementation.
20+
21+
## What Simplex Is
22+
23+
Simplex is a specification language for autonomous agents that describes work rather than workers, capturing what needs to be done and how to know when it's done without prescribing how to do it.
24+
25+
The language has no formal grammar. It uses landmarks, structural markers like FUNCTION, RULES, DONE_WHEN, and EXAMPLES, that LLMs recognize and interpret directly. Syntax is forgiving; meaning must be precise.
26+
27+
Here is an example specification for an e-commerce checkout system:
28+
29+
```yaml
30+
FUNCTION: process_checkout(cart, customer, payment) → CheckoutResult
31+
32+
RULES:
33+
- verify cart is not empty and all items are in stock
34+
- validate customer shipping address with postal service
35+
- apply discount codes and calculate final total
36+
- authorize payment for the calculated amount
37+
- reserve inventory for purchased items
38+
- generate order confirmation with tracking number
39+
40+
DONE_WHEN:
41+
- order is persisted with confirmed payment, or
42+
- checkout fails with specific reason at point of failure
43+
44+
EXAMPLES:
45+
(valid_cart, verified_customer, good_card)
46+
→ { success: true, order_id: "ORD-12345", total: 99.50 }
47+
(empty_cart, any, any)
48+
→ { success: false, reason: "cart is empty" }
49+
(valid_cart, unverified_address, any)
50+
→ { success: false, reason: "address verification failed" }
51+
(valid_cart, verified_customer, declined_card)
52+
→ { success: false, reason: "payment declined" }
53+
54+
ERRORS:
55+
- payment gateway timeout → retry once, then fail with "payment unavailable"
56+
- inventory changed during checkout → fail with "cart contents changed"
57+
- any unhandled condition → fail with descriptive message
58+
```
59+
60+
Six pillars guide the design:
61+
62+
**Enforced simplicity** requires that complex specifications be decomposed into smaller pieces. If something cannot be expressed simply, it is not yet understood well enough to specify.
63+
64+
**Syntactic tolerance, semantic precision** means the language forgives typos and formatting inconsistencies while requiring unambiguous meaning.
65+
66+
**Specification, not implementation** means describing what and constraints, never how. Agents choose their own approach.
67+
68+
**Testability** requires concrete examples for every function. These serve as contracts and ground truth.
69+
70+
**Completeness** requires that specifications be sufficient without clarification. No back-and-forth, no requests for additional context.
71+
72+
**Implementation opacity** means the spec describes contracts. Whether agents implement a data store as a graph database or a file system is their concern, not the spec's.
73+
74+
## Why This Matters
75+
76+
Autonomous agent workflows are maturing. Agents now work for extended periods, hours or days, developing applications, iterating on solutions, evaluating versions among themselves, and producing release candidates. These workflows need instructions that are complete enough to act on yet flexible enough to allow emergent problem-solving.
77+
78+
Simplex is designed for this context: a human writes a specification that agents interpret, decompose, and execute autonomously. The specification serves as the contract between human intent and machine action.
79+
80+
Perhaps what matters most is not how LLMs write code, but how humans express what they want built. A specification language designed for human authors, one that captures intent precisely enough for autonomous agents to act on, may prove more valuable than any improvements to code generation itself.

Gemfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source "https://rubygems.org"
2+
3+
gem "github-pages", group: :jekyll_plugins
4+
gem "webrick"

LICENSE

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
MIT License
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is
8+
furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19+
SOFTWARE.

QUICKSTART.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Simplex
2+
3+
A minimal specification language for autonomous AI agents.
4+
5+
## What is Simplex?
6+
7+
See [README.md](README.md) for the full specification.
8+
9+
## Quick Start
10+
11+
A Simplex specification describes what a function should do using landmarks:
12+
13+
```
14+
FUNCTION: add(a, b) → sum
15+
16+
RULES:
17+
- return the sum of a and b
18+
19+
DONE_WHEN:
20+
- result equals a + b
21+
22+
EXAMPLES:
23+
(2, 3) → 5
24+
(0, 0) → 0
25+
26+
ERRORS:
27+
- non-numeric input → "Inputs must be numbers"
28+
```
29+
30+
### Required Landmarks
31+
32+
Every function needs these five sections:
33+
- **FUNCTION** - signature and return type
34+
- **RULES** - what the function does
35+
- **DONE_WHEN** - success criteria
36+
- **EXAMPLES** - input/output pairs
37+
- **ERRORS** - failure cases
38+
39+
### Validate with the Linter
40+
41+
```bash
42+
cd lint
43+
make build
44+
./bin/simplex-lint ../examples/minimal.simplex
45+
```
46+
47+
## Documentation
48+
49+
- [README.md](README.md) - Full specification (v0.3)
50+
- [1-pager.md](1-pager.md) - Executive summary
51+
- [examples/](examples/) - Example specifications
52+
- [docs/lint-design.md](docs/lint-design.md) - Linter architecture
53+
54+
## Status
55+
56+
Research spike exploring structured specification capture for AI agent development.

0 commit comments

Comments
 (0)