Bondsmith
A spec-driven development workflow engine in Rust - phase contracts enforced in typed code, not by an LLM.
MVP · 2 of 8 shippedRoadmap ↓
Capabilities
A Feature moves through a fixed, eight-phase chain - explore → propose → review-spec → implement → review-check → review-and-ship → learn-from-reports → validate-impl - each one a typed contract with postconditions the engine evaluates itself, in Rust. The figure groups those eight into four stages - plan, build, check, ship - and every phase is a hard postcondition gate, not a warning.
There is no assert-and-warn escape hatch: a failed postcondition is a hard block - a distinct outcome from a fault, never a downgraded warning - so no LLM grades its own homework mid-flow.
Each Feature runs in its own git worktree, provisioned per bound repo with native git2 and cleaned up on every exit path - including a crash - so beats never collide and multi-repo coordination is real today, not planned.
Roadmap
- Shipped: Fixed eight-phase flow chain, each phase a typed contract
- Shipped: Typed postcondition contracts, hard-blocked on failure
- In progress: learn-from-reports: mining patterns from delivery reports
- In progress: herdr / fzf / jq editing plugin over flowctl (replaces the retired bondsmith-web Dashboard)
- Planned: Session monitoring across every phase and state
- Planned: LLM session handling
- Planned: Containerization
- Planned: Flow contracts loadable from disk (not embedded at compile time)
MVP · 2 of 8 shipped
After MVP
- Planned: Web hub Dashboard over flowctl
- Planned: Pi target port
- Planned: Technical flow
Bondsmith is the workflow engine I run my own feature work through: a Rust CLI that drives a spec-driven flow from exploration to shipped code and refuses to advance when the work doesn't hold up.
The premise is that an LLM is non-deterministic by construction, so the answer isn't to trust it harder. It's to make everything around it deterministic. A feature moves through a fixed chain of phases, each one a typed contract with postconditions the engine evaluates itself, in Rust. No LLM grades its own homework, and there is no assert-and-warn escape hatch: a failed postcondition is a hard block.
A deep-dive post on this is coming. Stay tuned.