From Old English gafol — rent, tribute: land "held by gavel" was land held by paying rent instead of owing service. The same word is now the auctioneer's hammer. Rent-tenure and auction, one syllable. And it keeps the tool pairing with Burin: the burin cuts the record; the gavel strikes the price.
A community puts its land into a machine; the machine discovers what every parcel's rent is (no assessor), collects it (no collector), and spends it (no budget fight). This repo is the jumping-off point for anyone who followed the Rent Machine talks and wants to build the real thing: the design, the tested mechanism, reference smart contracts, and the no-blockchain v0 that a single community land trust could run next month.
The one idea to take with you, if you take only one — the keeper's right: a sitting tenant never bids; their rent is the critical price, the welfare the market loses if their parcel vanishes, computed entirely from other people's sealed sheets. You cannot be outbid out of your home, only priced. And your own discoveries never raise your own rent — which dissolves the strongest modern objection to Henry George (Gochenour & Caplan's search-theoretic critique) by construction rather than by argument.
| Piece | What it is | Status |
|---|---|---|
DESIGN.md |
The full mechanism: cells → leases → epochs → two doors → treasury → (optional) demurrage scrip. Read this first. | proposal, complete |
sim/ |
The mechanism as pure TypeScript — the normative reference. Truthfulness, individual rationality, VCG⊇Vickrey, and hand-checked Clarke pivots are tested properties, not claims. | ✅ 17 tests green |
transcripts/ |
Gavel v0: no chain at all. Each epoch publishes a JSON transcript; verify.mjs re-derives every number. Accountability without consensus. |
✅ verifier + example round |
contracts/ |
Reference Solidity (0.8.24): Mechanism.sol (the math), Gavel.sol (register, epochs, commit–reveal, keeper's right, treasury), Slate.sol (procurement, paid on Burin-witnessed delivery), IBurinVerifier.sol (the trust ladder). |
compiles clean; unaudited, toy-scale, never deployed |
specimen/ |
One real Burin seal over a real Detroit parcel (2600 Brush St — bought $330k in 2014, land now $4.0M, twelve idle years), plus the printable 24-word cards and the live demo script. | ✅ verifies offline |
demo/ |
The keeper's right, playable. Try to move your own land tax (you can't — it's computed from everyone else's sheets), then tamper with a published round and watch the arithmetic catch you. Open demo/index.html in any browser — no build, no network. |
✅ self-contained |
# 1. the mechanism's honesty is a tested property, not a slogan
cd sim && npm install && npm test
# 2. re-run a published round yourself — this is the whole v0 trust model
cd ../transcripts && node verify.mjs rounds/0001.json
node verify.mjs --selftest # hand-checked pivots you can redo on paper
# 3. the contracts (compile-checked; bring Foundry or Hardhat to go further)
cat contracts/Gavel.sol Burin (where/when, sealed, offline-verifiable)
│ parcel = Merkle root of rHEALPix cells; bids = sealed commitments;
│ delivery = seals witnessing place+time (see specimen/)
▼
┌──────────────────────── the mechanism (sim/) ────────────────────────┐
│ door ① batch VCG: sealed sheets to USE land → winners pay pivots │
│ keeper's right: sitting tenant pays criticalPrice, set by others │
│ door ② reverse VCG: sealed asks to DELIVER outcomes → paid pivots │
└──────────────────────────────────────────────────────────────────────┘
│ runs as runs as │
▼ ▼
transcripts/ (v0: signed log, contracts/ (v1: escrow,
anyone re-runs the round) strangers, real money)
Three implementations, one mechanism, pinned together: sim/ is normative,
transcripts/verify.mjs is its executable twin (same algorithm as the
Solidity), and sim/parity.test.ts holds them equal on hundreds of random
instances. If you change one, change all three and keep the tests green.
A land trust already holds fee-simple title — it is already trusted with
the land itself. The residual threat is "the trust cheats on the auction,"
and a published transcript kills that without consensus: commitments before
the deadline, reveals after, and a clearing anyone can re-run (verify.mjs
is ~200 lines; read it). A chain earns its place only when strangers need
escrow nobody holds — that is what contracts/ is for, when you get there.
What this design answers, and what it doesn't (details in DESIGN.md):
- The assessor problem — answered. Door ① is a mass appraisal by market; the improvement clause (self-assessment applied only to the elastic asset) severs buildings from land with no appraiser either.
- The search critique (Gochenour & Caplan 2013) — answered for land you hold (the keeper's right); partially answered for prospecting on land you don't (the finder still keeps the second-price margin).
- VCG collusion / false-name bids — bounded, not solved: bonds, identity-bound sheets, unit demand, small batches, full post-reveal transparency.
- Thin markets — handled honestly: no bids → the bar is zero → rent decays. Unwanted land is free land (Ricardo's margin).
- WHAT to fund — irreducibly political, deliberately shrunk: the dividend is the default; the slate only ranks; the auction only prices.
Built from the Rent Machine talk series (Henry George School, 2026): the audience chose Vickrey at both doors, then voted the upgrade to full VCG. The mechanism here is the same code that ran on stage. Prior art and departures — Harberger/COST, partial common ownership, quadratic funding, Wörgl/Gesell — are catalogued in DESIGN.md.
MIT for everything in this repo. Burin itself is separate (PolyForm Noncommercial 1.0.0) — check its license before commercial use; the specimen artifacts here are data, not code.