← Experiments
01 · The framework · Sept 2026

bocht/bɔxt/ · Dutch, noun — a bend, a curve

A whole backend, one Bend program, one binary.

An AI app builder wrote a backend framework as a single Bend program: HTTP, auth, rate limits, a write-ahead log, REST and MCP, compiled through C into one native binary with no database, no proxy and no queue beside it. It shipped with a verification discipline worth stealing. This page is the framework and that discipline; bochtCMS is the app built on top, and the curve its tests missed.

8,793
lines of Bend (r61)
1,364
definitions
20
routes
0
sidecars
The whole servicearm64 · release r61
1.70MB
one native binary · Bend 2.0.35 · builds in ~20 s
HTTP/1.1 keep-alivebearer keys · rolesrate limits20 routes segmented WAL + fsyncHMAC-bound snapshotsPOST /mcpSHA-256 in pure Bend
0database processes
0reverse proxies
12C effects
01 — The framework

One process. No sidecars.

Bocht is a backend framework written as one Bend program. Bend compiles it to C, clang compiles that to a single native binary, and that binary is the whole service: no database process, no reverse proxy, no queue. Everything a request touches lives in the same address space.

1,364
definitions and 22 types in one source file
12
custom C effects for fsync, directory ops, socket timeouts and HMAC
SHA-256
implemented in pure Bend, not linked in
0
proofs — Bend can check them; Bocht doesn't write any

Honest limits

  • Single node. No replication, sharding or consensus.
  • The log survives the process dying, not the power going out.
  • One request at a time. A slow request blocks every client — which is why the curve in bochtCMS mattered.
  • Bend moves fast: the builder reports breaking changes in every release from 2.0.18 to 2.0.34. The pinned r61 release was built on 2.0.32 and stopped building after it; one line brings it to 2.0.35.
02 — The method

Built by one AI. Checked by another.

I didn't write Bocht. I directed an AI app builder that wrote it, and it worked under a verification discipline worth stealing: no claim ships unless it can be re-derived from files on disk.

1 · Probe

Every capability has a script

Each one ends with one canonical line: RESULT: PASS=n FAIL=0. No line, no claim.

2 · Manifest

Results bound to a binary

A stamp script writes the exact binary's SHA-256 next to every result file it produced.

3 · Verify

A second script audits the ledger

Source hash, binary hash, build exit code and manifest must all agree before "done" is written.

4 · Canary

The pinned build is watched

A read-only backup and a hash sidecar are checked hourly against the live binary.

5 · Ledger rule

Never say "flawless"

Verified claims only. Never production-ready, clustered, replicated or bug-free.

What the discipline got right

  • Every hash in the bundle matched its README.
  • The 43-test suite reproduced on a different OS and CPU.
  • By the builder's account, its own first run caught a real protocol bug: the tool name read from the wrong object.
  • Writes survived kill -9: 303 of 303 acknowledged writes, and 20 of 20 single-write cycles.

What it can't see

  • A manifest proves which binary produced a log. It doesn't prove the log tested the right things.
  • All 43 checks used tiny payloads. Nothing timed a realistic post.
  • The suite passed on every version — including the one where a read deleted a post.
  • The shipped verifier needed a ledger file that wasn't in the bundle, so it couldn't be run.
03 — Still open

What the audit didn't close.

The evaluation fixed the CMS and proved it. On 5 Oct the framework release underneath, r61, was brought to Bend 2.0.35 and given the same fix (section 04). These still stand.

"Newer" source that isn't

The builder's README calls src/ a newer working copy than r61. Joined in order, its parts are the bochtCMS source line for line: the CMS, not a newer framework.

Linux not re-run

The 2.0.35 build and its 27 checks ran on one Apple-silicon Mac. The builder's Linux binary and manifest are kept as shipped, not rebuilt.

One node, one request

No replication, sharding or consensus, and requests run one at a time, so any slow request stalls every client.

Proof-ready, proof-free

Bend can check proofs about programs. Bocht writes none; its guarantees come from tests and manifests, not types.

The full audit, including the curve, the builder's regressions and the one-function fix, is on the bochtCMS page.

04 — Bend 2.0.35

Re-verified on Bend 2.0.35.

Bend 2.0.35 shipped on 3 Oct. r61 was built on 2.0.32 and stopped building after it, once TCP.listen started taking a host. One line brings it back, and the same pass gives the framework the one-function fix proven in bochtCMS.

1 line

To build on 2.0.35

TCP.listen(18081) becomes TCP.listen("127.0.0.1", 18081), the form bochtCMS already uses. The native build takes about 20 s.

27 / 27

r61's own checks

item197, the shipped snapshot-HMAC probe (forged, flipped, legacy, rotated and 500-write snapshots), passes natively on a Mac for the first time.

0 / 90

Differences from before the fix

The same 90-request replay used for bochtCMS, run on r61 with and without the fix: every response identical.

16.9 s → 0.013 s

Clap with 32 KB of padding

The REST clap count was read by the same quadratic helper. Same fix, same pattern.

src/ gets the same fix, so joined in order it now matches the bochtCMS source exactly. The builder's Linux binary, manifest and result log are kept as shipped.

The Bend series

One language. Three builds. One auditor.

Three programs, one young language, one method. Each was written by an AI app builder in Bend 2 under an evidence-first discipline, then handed to Claude Code to check: reproduce every claim, attack it, profile it, fix only what is proven, and show the fix changed nothing else. Every time, the builder's own tests passed, and something real was still wrong.

About the series: the language, the method, what it found →