QWED = Query with Evidence and Determinism
Thank you for your interest in contributing! Before you start, please read this guide to understand QWED's philosophy and avoid common misunderstandings.
| File | Why It Matters |
|---|---|
| README.md | Understand what QWED is |
| QWED_RULES.md | Canonical enforcement rules for contributors and tools |
| docs/architecture.md | System design and engine architecture |
| CODE_OF_CONDUCT.md | Community standards |
| SECURITY.md | How to report vulnerabilities |
QWED is NOT just another LLM wrapper. Our philosophy:
- LLMs are untrusted translators - They convert natural language to structured queries
- Symbolic engines are trusted verifiers - SymPy, Z3, SQLGlot, etc. do the actual verification
- Determinism is required - Given the same input, output must be identical every time
- LLM output is never proof - Models may assist with translation or enrichment, but they must not weaken deterministic enforcement
When contributor guidance and enforcement guidance appear to conflict, follow
QWED_RULES.md as the authoritative source for boundary behavior.
Sensitive operations must go through approved wrappers — never bare calls:
| Dangerous Operation | Approved Path |
|---|---|
eval() / exec() |
code_engine.safe_eval() / code_engine.safe_exec() |
parse_expr() |
safe_parser.safe_parse_expr() |
os.system() / subprocess.Popen() |
code_engine.safe_shell() |
Direct calls to these dangerous functions outside their approved wrappers will
be caught by the CI boundary gate (see scripts/check_boundary.py).
| Wrong Approach | Correct Approach |
|---|---|
| "Let the LLM verify the math" | Use SymPy to compute, LLM only translates |
| "Add more LLM prompts to fix edge cases" | Add deterministic patterns/rules |
| "Cache LLM responses" | Deterministic verification doesn't need caching |
| "Trust LLM confidence scores" | Use symbolic proof verification |
| "The system prompt will prevent X" | Add an explicit deterministic guard |
| "The model said it's correct" | Verify with deterministic computation |
# Clone the repo
git clone https://github.com/QWED-AI/qwed-verification.git
cd qwed-verification
# Create virtual environment
python -m venv venv
source venv/bin/activate # or .\venv\Scripts\activate on Windows
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest tests/ -vWe are building symbolic execution capabilities. Here are the priority issues:
| Priority | Issue | Description |
|---|---|---|
| 🔴 High | #15 CrossHair Integration | Python-native symbolic execution |
| 🟡 Medium | #16 Bounded Model Checking | Loop depth limits for path explosion |
| 🟢 Easy | Documentation improvements | Help improve docs |
Pick an issue labeled good first issue or help wanted to get started!
Open an issue with:
- QWED version (
pip show qwed) - Python version
- Input that caused the bug
- Expected vs actual output
- Full traceback
Before coding, open an issue to discuss:
- What problem does it solve?
- Does it require LLM or is it deterministic?
- Which engine does it affect?
# 1. Fork and clone
git clone https://github.com/YOUR_USERNAME/qwed-verification.git
# 2. Create a branch
git checkout -b feat/your-feature
# 3. Make changes
# 4. Run tests
pytest tests/ -v
# 5. Commit with conventional commits
git commit -m "feat(engine): add capability X"
# 6. Push and create PR
git push origin feat/your-featureTo maintain high code quality and security, all Pull Requests (PRs) must undergo a rigorous review process:
- Two-Person Review: All non-trivial changes (features, bug fixes, refactors) require validation from at least one maintainer other than the author.
- Automated Checks: All CI checks (linting, testing, security scans) must pass.
- Review Checklist:
- Logic correctness and edge case handling
- Test coverage (tests added for new features)
- Security implications (no hardcoded secrets, safe input handling)
- Documentation updates
- Compliance with coding standards (PEP 8, type hints)
Self-merging is restricted to documentation fixes, minor typos, or urgent hotfixes by the BDFL.
type(scope): description
feat(math): add matrix determinant support
fix(sql): handle nested subqueries
docs: update architecture diagram
test: add edge cases for logic engine
qwed-verification/
├── src/qwed_new/
│ └── core/ # 🔴 Core verification engines
│ ├── *_verifier.py # One file per engine
│ └── control_plane.py # Request routing
├── qwed_sdk/ # Python SDK
├── sdk-ts/ # TypeScript SDK
├── sdk-go/ # Go SDK
├── sdk-rust/ # Rust SDK
├── tests/ # Unit tests
├── examples/ # Usage examples
└── docs/ # Documentation
These features are in a separate enterprise repo and not accepted here:
- ❌ Audit logging / compliance exports
- ❌ SSO / authentication systems
- ❌ Multi-tenancy features
- ❌ Telemetry / observability
- ❌ Enterprise RBAC
If you're interested in enterprise features, contact us at rahul@qwedai.com.
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.
To contribute to this project, you must sign off on your commits, certifying that you have the right to submit the code under the project's license. This is done by adding a Signed-off-by line to your commit messages.
Signed-off-by: Random J. Developer <random@developer.example.org>
By signing off, you certify the following:
I certify that the contribution is original work, or I have the right to submit it under the open source license. I understand that my contribution and personal information (including name and email) will be permanently recorded in the project's commit history.
Build tools and bots may enforce this requirement. You can sign off commits automatically with git commit -s.
This project is governed under a BDFL model. See GOVERNANCE.md for details on decision making, roles, and continuity planning.
- Open an issue with the
questionlabel - Join discussions in GitHub Discussions
- Email: rahul@qwedai.com