Specification-Driven Development Extended - LLM-agnostic spec-first governance framework with role enforcement, telemetry, and GitHub integration
Project description
SDD+ - Specification-Driven Development Extended
LLM-agnostic spec-first governance framework for AI-assisted development, with independent audit gates, role-based file enforcement, telemetry, and a web dashboard.
Core principle: Specifications are binding. Code follows spec, not vice versa. Audit is independent and impartial.
LLM-agnostic: SDD+ doesn't care what AI (or human) executes each role. Use Claude, GPT-4, Gemini, Llama, Ollama, or manual review. Bring your own executor.
Install
pip install sdd-plus
Requires Python 3.13+.
Quick Start
# Initialize a new SDD+ project
sdd init
# Check current phase and state
sdd status
# Transition state (as auditor or implementer, with any executor)
sdd transition REFINED --role auditor --executor claude
sdd transition IMPLEMENTING --role implementer --executor gpt-4
# Run the 4-step audit loop (executor is whoever runs the audit)
sdd audit --role auditor --executor claude --auto-approve
# Advance to next phase (auditor only, after COMPLETED)
sdd new-phase --role auditor
# Install the pre-commit enforcement hook
sdd install-hooks --role implementer
# Check file patterns against role rules (dry-run)
sdd check-patterns --role implementer --files src/foo.py
# View telemetry
sdd metrics show --phase 4
# Launch the web dashboard
sdd dashboard --port 8888
What It Does
SDD+ enforces a spec-first workflow with pluggable executors:
- State Machine - 6-state lifecycle: DRAFT -> REFINED -> LOCKED -> IMPLEMENTING -> AUDITING -> COMPLETED
- Role Enforcement -
AGENTS.yamldeclares which files each role (implementer/auditor) may touch. A git pre-commit hook enforces it. - Audit Loop - 4-step automated audit: pytest, coverage >= 85%, spec conformance, contract conformance.
- Telemetry - Every transition and audit is logged to
.sdd-metrics/as JSONL. - Dashboard -
sdd dashboardserves a read-only web UI showing project state, audit history, and metrics.
Architecture
project/
AGENTS.yaml # Authority matrix (role -> file patterns)
sdd/
artifacts/ # Specs, contracts, audits, state snapshot
STATE_SNAPSHOT.yaml
PHASE_N_SPEC.yaml
PHASE_N_CONTRACT.yaml
PHASE_N_AUDIT.yaml
handoffs/ # Phase transition summaries
state_machine/ # 6-state machine + transitions
schemas/ # Pydantic v2 models
validators/ # Contract + state validators
enforcement.py # File-pattern denylist enforcement
git_integration.py # Git helpers (branch, commit, clean check)
telemetry.py # JSONL event emitter + query
web/ # FastAPI + Jinja2 dashboard
cli/ # Typer CLI commands
tests/ # 244+ tests, >= 85% coverage
.sdd-metrics/ # Telemetry JSONL (gitignored)
CLI Commands
| Command | Description |
|---|---|
sdd init |
Initialize SDD+ in a directory |
sdd status |
Show current phase and state |
sdd validate |
Validate contract and state artifacts |
sdd transition STATE --role ROLE [--executor E] |
Advance the state machine |
sdd new-phase --role auditor |
Start next phase after COMPLETED |
sdd audit --role auditor [--executor E] |
Run 4-step audit loop |
sdd install-hooks --role ROLE |
Install git pre-commit hook |
sdd check-patterns --role ROLE |
Dry-run file enforcement check |
sdd metrics show |
Display telemetry records |
sdd dashboard |
Launch web dashboard |
sdd projects list/add/remove |
Manage workspace projects |
Phases Completed
| Phase | Title | Tests | Coverage |
|---|---|---|---|
| 0-2 | Schemas + State Machine + CLI | 64 | 85%+ |
| 3 | Agent Harness (AGENTS.yaml, audit loop) | 118 | 92% |
| 4 | Harness Closure (enforcement + git hooks) | 190 | 92.1% |
| 5 | Telemetry & Metrics | 225 | 91.7% |
| 6 | Web Dashboard | 244 | 91.6% |
| 7 | PyPI Packaging | 244+ | 91%+ |
Development
# Clone and install in dev mode
git clone https://github.com/oscarfrancodev/sdd-plus.git
cd sdd-plus
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=sdd --cov-report=html
License
MIT - see LICENSE.
Built by Oscar Franco (ReguSense). LLM-agnostic by design.
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 sdd_plus-0.3.0.tar.gz.
File metadata
- Download URL: sdd_plus-0.3.0.tar.gz
- Upload date:
- Size: 132.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ddec6539a83ed857c061fe3b48c8a8a3b20d2d74c9ac611499310666e40994c
|
|
| MD5 |
92d263f6330861cc2db14ce3e18e3138
|
|
| BLAKE2b-256 |
838630531f02069778061a7a9190a9597e7c81ec36f680d02f32e3dd861abad1
|
Provenance
The following attestation bundles were made for sdd_plus-0.3.0.tar.gz:
Publisher:
publish.yml on oskcorps-sys/sdd-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sdd_plus-0.3.0.tar.gz -
Subject digest:
2ddec6539a83ed857c061fe3b48c8a8a3b20d2d74c9ac611499310666e40994c - Sigstore transparency entry: 1616091031
- Sigstore integration time:
-
Permalink:
oskcorps-sys/sdd-plus@9282feec6ac514d05cb84932d7dae6e8efe82c5d -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/oskcorps-sys
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9282feec6ac514d05cb84932d7dae6e8efe82c5d -
Trigger Event:
push
-
Statement type:
File details
Details for the file sdd_plus-0.3.0-py3-none-any.whl.
File metadata
- Download URL: sdd_plus-0.3.0-py3-none-any.whl
- Upload date:
- Size: 114.8 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 |
a7d7c6c2cda9db6dc2bbd16c4326a84e64fc84ae1b8460c786f06065fd4aef65
|
|
| MD5 |
87a10ab20aefeb6b1dea0347871919b9
|
|
| BLAKE2b-256 |
0ec168b49de1d6affc603e751a426d0db3a0005bc2fa68ad22e76dcb1f8ec722
|
Provenance
The following attestation bundles were made for sdd_plus-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on oskcorps-sys/sdd-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sdd_plus-0.3.0-py3-none-any.whl -
Subject digest:
a7d7c6c2cda9db6dc2bbd16c4326a84e64fc84ae1b8460c786f06065fd4aef65 - Sigstore transparency entry: 1616091034
- Sigstore integration time:
-
Permalink:
oskcorps-sys/sdd-plus@9282feec6ac514d05cb84932d7dae6e8efe82c5d -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/oskcorps-sys
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9282feec6ac514d05cb84932d7dae6e8efe82c5d -
Trigger Event:
push
-
Statement type: