# Retract evidence and find everything that leaned on it

**A source turns out to be wrong, and every commitment that cited it as basis surfaces on its own — nobody has to remember what they built on top of it, or go looking.**

`basis` is provenance nobody queries unless something reads it back. This is that something: retracting a record does not erase it or the edges it carries — retraction is itself a relation, `retracts`, pointing at what it withdraws — and the validator walks every live `justifies`/`decides` edge looking for one whose cause is now on the wrong end of one. A dependent surfacing here is not a refusal: the work stays exactly as written, and a person decides what to do about the ground it stood on.

Driven by a person and an agent. Every step below is a step in
`packages/server/tests/e2e`, run against a listening server on every pull
request; the calls under each one are what that run executed.

The same flow is playable at https://flow.ttoss.dev/docs/examples/retract-evidence-and-find-dependents.

## 1. Ana points her agent at a project

- `POST /api/v1/projects` → `201`

## 2. A commitment is filed, backed by a piece of evidence

- `POST /api/v1/tasks/batch` → `200`
- `POST /api/v1/tasks/batch` → `200`

## 3. The project validates clean — nothing has gone wrong yet

- `GET /api/v1/projects/proj_e2kkn9gb2k/validate` → `200`

## 4. The invoice turns out to be a draft, and a corrected one retracts it

- `POST /api/v1/tasks/batch` → `200`

## 5. The commitment resting on the retracted invoice surfaces on its own

- `GET /api/v1/projects/proj_e2kkn9gb2k/validate` → `200`
- `GET /api/v1/tasks/task_410tg28w4d` → `200`
