TypeScript and Rust only; port by measurement
Every extra language adds a toolchain, a build, a set of pitfalls and a skill a contributor must have. So Bridlewise is written in two: TypeScript for almost everything, and Rust where native code is truly needed.
The user’s rule of 2026-10-10:
- TypeScript for orchestration, the server, the UI and tools; Rust for CPU-heavy, per-byte or security-critical native code. No third language.
- A TypeScript part moves to Rust only when a measurement shows a ceiling TypeScript cannot pass with worker threads. It goes behind the same interface, and the TypeScript version is deleted in the same round (no dual path, no fallback: UR-17).
The exceptions in the tree (checked 2026-10-22 with git ls-files and each file’s first line)
Under the retroactive rule (UR-19) each exception is owned work, ported or removed under its issue:
| Files | Language | Owned by |
|---|---|---|
engine/verification/benchmarks/code-intelligence/inspect_existing_baseline.pyengine/verification/benchmarks/code-intelligence/mcp_probe.pyengine/verification/benchmarks/code-intelligence/policy_schemas.pyengine/verification/benchmarks/code-intelligence/qualification.pyengine/verification/benchmarks/code-intelligence/tests/test_qualification.py |
Python (5) | #133 |
engine/verification/benchmarks/context/generate-scenarios.pyengine/verification/benchmarks/context/validate-suite.py |
Python (2) | #134 |
engine/verification/benchmarks/git/fault_transport.pyengine/verification/benchmarks/git/qualification.pyengine/verification/benchmarks/git/tests/test_qualification.py |
Python (3) | #135 |
engine/guardian/tests/require-pass-log.shengine/guardian/tests/run-tests.shengine/scripts/exp435/run-5000.shengine/verification/benchmarks/runtime/verify-node-v24.18.0-linux-x64.sh |
Shell (4) | #136 |
.githooks/commit-msg.githooks/post-commit.githooks/pre-commit.githooks/pre-merge-commit.githooks/reference-transaction |
Shell (5, generated by harness sync) |
#155 |
engine/guardian/landlock-guardian.cengine/guardian/landlock-guardian.hengine/guardian/test-process-supervisor.cengine/guardian/tests/test_payload.c |
C (4) | #137 (NATIVE-ONE) |
engine/verification/benchmarks/security/s3-key-anchor-qualification/src/probe-keyring.cengine/verification/benchmarks/security/s3-key-anchor-qualification/src/probe-memory.cengine/verification/benchmarks/security/s3-key-anchor-qualification/src/probe-mount-openat2.cengine/verification/benchmarks/security/s3-key-anchor-qualification/src/probe-openat2.c |
C (4) | #138 |
Not exceptions: the evaluation fixtures under engine/test/fixtures/eval-projects/
(Python, Go, Java, Ruby) are inputs the code-intelligence evaluations read in
other languages on purpose; they are not Bridlewise’s code.
What is missing
- Every exception above is still in the tree.
- No guard yet refuses a new file in a third language (#139).