01
Explicit by construction
Effects live in signatures and capabilities live in values. A function cannot quietly reach beyond either one.
Deed 0.2.13 / contract-first language
Deed compares the checked contract before and after a patch. It flags new authority, weaker guarantees, and new runtime checks even when the tests stay green.
- uses Store.read
+ uses Store.read, Store.write
Review blocked
Produced from the pinned Deed compiler. Open the full receipt.
Why Deed
01
Effects live in signatures and capabilities live in values. A function cannot quietly reach beyond either one.
02
A promise is proven, turned into generated tests, guarded at runtime, or refused with the reason it could not go higher.
03
Review compares checked trees, so new authority and weaker guarantees stay visible even when tests still pass.
Use Deed for
See authority additions, tier regressions, and new runtime obligations.
Open the review receiptPass filesystem, store, clock, and service access as explicit values.
Follow one boundaryTurn a contract into reproducible property cases without writing a test.
Open the contract examplesBuild a WebAssembly component and call it from a capability-holding host.
Read the host guideOne binary
Each surface asks the same compiler. No second policy engine and no service account between the source and the answer.
deed check
Types, effects, capabilities, and contracts
before runtime
deed test
Written tests and generated properties
replayable seeds
deed review
Before-and-after authority evidence
independent gates
deed fmt / fix
Formatting and machine-applicable repairs
preview first
deed lsp / dap
Editor feedback and protocol debugging
VS Code included
deed build / mcp
WebAssembly components and seven local agent tools
one compiler
Underneath the receipt
Deed checks types, effects, capabilities, contracts, and the code that must satisfy them. Nothing is ambient. If a function can touch the filesystem, the filesystem appears in its inputs and the operation appears in its signature.
See one clause become a boundaryfn keep(files: Dir, name: String, text: String)
-> Result<(), String>
uses Io.read,
{
match Io.read(files, name) {
ok(_) => ok(()),
err(_) => Io.save(files, name, text),
}
}
error[DEED5001]: `keep` performs `Io.save`
without declaring it
Learn Deed
Project record
The compiler, examples, release artifacts, design decisions, and contribution process are public. The site adds no analytics or account layer around them.