# Reported issues for Deed

Pod holds 8 of 8 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [Deed](/mcp/deed).

## Most discussed

### The handshake tells an agent to check and stops, and it never ran a test

Measured, off the transcript of the one real model run (`gpt-5.6-luna`, six tasks, seventy tool calls):

| tool | calls |
| --- | --- |
| `deed_check` | 65 |
| `deed_explain` | 4 |
| `deed_fix` | 1 |
| `deed_test` | **0** |
| `deed_run` | **0** |
| `deed_fmt` | **0** |

Six tasks, every one of them scored on whether its tests pass, and the model never ran a test. Not once. It got 5/6 passing by writing them correctly rather than by ever checking.

That is not the model being lazy. I

[Read the thread](https://github.com/deed-lang/deed/issues/833) · 2026-08-01 · closed · 1 comment

### The agent surface runs the tests a program was written with, not the ones its contracts generate

`deed test` runs two things: the `test` blocks, and the properties generated from contracts. `deed_wasm::test_source`, which is what the playground and `deed mcp` call, runs only the first. It does not import `run_properties`.

That is not only fewer answers, it can be the opposite answer. This program is the `CLEAN` fixture in `crates/deed-mcp/smoke.py`, near enough:

```deed
module smoke

fn twice(n: Int) -> Int
  where
    n > 0,
  ensures
    ok  => result > n,
{
    n + n
}


[Read the thread](https://github.com/deed-lang/deed/issues/827) · 2026-08-01 · closed · 0 comments

### The wasm surface runs a program without asking whether it checked

The wasm surface runs a program before asking whether it checked, and it answers "no tests" with silence. Both matter more now that `deed mcp` is the thing agents talk to: the same server uses silence to mean "well formed" in `deed_check`.

Measured, all three through `deed_wasm` directly:

```
test_source("module main\n\nfn f() -> Int { 1 }\n")
  -> ""

test_source("module main\n\nfn f() -> Int { nonesuch }\n\ntest \"t\" { assert 1 == 1 }\n")
  -> {"kind":"test","name":"t","passed":tru

[Read the thread](https://github.com/deed-lang/deed/issues/823) · 2026-08-01 · closed · 0 comments

### Nothing checks that deed mcp can hold a session with a real MCP client

`deed mcp` has 27 tests and every one of them speaks to the server directly. That checks the protocol we think we implemented, not the one clients actually implement, and those are different things until something proves otherwise.

I pointed the reference MCP client at it today for the first time. It works: the handshake completes, `instructions` arrives, all six tools list with the argument names they should have, `deed_check` returns its obligation lines and `deed_explain` returns a page. S

[Read the thread](https://github.com/deed-lang/deed/issues/816) · 2026-07-31 · closed · 0 comments

### The compiler has no door an agent can walk through

The compiler answers a person at a terminal, a person in an editor, and a person
in a browser. It does not answer the reader `design/00-motivation.md` says most
code is now written for.

`design/00-motivation.md` opens with the claim everything else here rests on:
most of the code being written today is not typed out by a person, and that
changes which costs matter. Every surface built since then was built for a
person anyway. An agent that wants to know whether a Deed program is well for

[Read the thread](https://github.com/deed-lang/deed/issues/792) · 2026-07-31 · closed · 0 comments

### MIR: design handler dispatch representation based on the resumability answer

Design the MIR shape for handler installation and operation dispatch, based on the previous issue's finding.

Part of #469.

[Read the thread](https://github.com/deed-lang/deed/issues/495) · 2026-07-30 · closed · 0 comments

### Scaffold deed-rt runtime support crate

New crate for what compiled code calls at runtime (list/string helpers, sandbox checks, contract-failure formatting). Empty for now; deed-interp's sandbox.rs moves in or gets shared later.

Part of #469.

[Read the thread](https://github.com/deed-lang/deed/issues/474) · 2026-07-30 · closed · 0 comments

### The tier is always visible, except where the reader is

`design/02-syntax.md` promises "contracts are handled in three tiers, and the tier is always visible", and says how: `deed check` reports which tier each obligation landed in. That is true of a terminal and false of the place a reader is.

I grepped the whole `deed-lsp` crate for `obligation|Tier|precondition|contract|ensures|requires`. **One match, and it is a comment**: "The whole thesis of the language is that the signature is the contract." The server says the thesis and answers nothing abou

[Read the thread](https://github.com/deed-lang/deed/issues/295) · 2026-07-28 · closed · 0 comments

## Most recent

The remaining reports are on [the project's issue tracker](https://github.com/deed-lang/deed/issues).
