---
title: "write. diagnostics"
description: "Owner: the runtime spec (defs/runtime.ts). The status is the code's own; the exit comes from its category (CATEGORIES). A warning or info code never sets the status or the exit."
order: 49
---

# `write.*` diagnostics

Owner: the runtime spec (`defs/runtime.ts`). The status is the code's own; the exit comes from its category (`CATEGORIES`). A warning or info code never sets the status or the exit.

| Code | Category | Severity | Status | Exit | Retry | Fix | Args |
|---|---|---|---|---|---|---|---|
| <a id="write.cascade_forbidden"></a>`write.cascade_forbidden` | policy | error | 403 | 4 | no | — | `type`, `child_type` |
| <a id="write.cascade_limit"></a>`write.cascade_limit` | limit | error | 413 | 2 | no | — | `limit` |
| <a id="write.delete_restricted"></a>`write.delete_restricted` | data | error | 409 | 6 | no | — | `type`, `child_type`, `readable_children?` |
| <a id="write.dependents_blocked"></a>`write.dependents_blocked` | data | error | 409 | 6 | no | — | `type`, `child_type`, `visible?` |
| <a id="write.derived_not_writable"></a>`write.derived_not_writable` | input | error | 400 | 2 | no | — | `type`, `prop` |
| <a id="write.forbidden"></a>`write.forbidden` | policy | error | 403 | 4 | no | — | `type`, `op`, `prop?`, `post_image?` |
| <a id="write.initial_state_only"></a>`write.initial_state_only` | state | error | 409 | 5 | no | — | `type`, `prop`, `initial` |
| <a id="write.invariant_failed"></a>`write.invariant_failed` | data | error | 409 | 6 | no | — | `invariant`, `type`, `message`, `id?` |
| <a id="write.not_found"></a>`write.not_found` | not_found | error | 404 | 3 | no | — | `type` |
| <a id="write.overlap"></a>`write.overlap` | data | error | 409 | 6 | no | — | `invariant`, `key` |
| <a id="write.prop_unknown"></a>`write.prop_unknown` | reference | error | 400 | 2 | no | yes | `type`, `prop`, `near` |
| <a id="write.ref_missing"></a>`write.ref_missing` | data | error | 409 | 6 | no | — | `type`, `prop`, `target` |
| <a id="write.required_missing"></a>`write.required_missing` | input | error | 400 | 2 | no | — | `type`, `prop` |
| <a id="write.stamp_not_writable"></a>`write.stamp_not_writable` | input | error | 400 | 2 | no | — | `type`, `prop` |
| <a id="write.state_not_writable"></a>`write.state_not_writable` | input | error | 400 | 2 | no | — | `type`, `prop`, `lifecycle` |
| <a id="write.transition_not_from"></a>`write.transition_not_from` | state | error | 409 | 5 | no | — | `type`, `transition`, `from`, `current?` |
| <a id="write.transition_undeclared"></a>`write.transition_undeclared` | reference | error | 400 | 2 | no | — | `lifecycle`, `transition` |
| <a id="write.unique_violation"></a>`write.unique_violation` | data | error | 409 | 6 | no | — | `invariant`, `props` |
| <a id="write.value_invalid"></a>`write.value_invalid` | input | error | 400 | 2 | no | — | `type`, `prop`, `expected` |
| <a id="write.version_conflict"></a>`write.version_conflict` | conflict | error | 409 | 6 | no | — | `type`, `expected`, `actual?` |
