Specification · v1 Working Draft
anvil·md

Specification  ·  Section 12 of 14

Failure modes, ranked by how much they hurt

Twenty-two ways to get this wrong, ranked by how much each one hurts, with the guard for each.

#FailureGuard
1Parser throws on a partial streamtotal parser (§11) + an error boundary per message
2Stamp derived from client statelaw II, resolutions from the server (§7.6)
3No idempotency key(blockId, nonce), first wins, 409 for the rest (§7.3)
4Stamp text handed to the model unframeduntrusted wrapper (§8.1)
5A read-only viewer can stampserver-side permission gate (§8.2)
6Upload tag emitted before bytes landstamp on submit, not on drop (§7.4)
7Uploaded file not attached to the turnattach real parts, not just a filename (§4.6)
8Block autofocuses§9.1, no exceptions
9Height changes on stamp, or images pop in§9.2, §9.4
10Unstable derived idshash content, never index (§11)
11Secret echoed into the tagmask server-side (§7.6)
12Stale blocks left liveexpires + @void (§4.11)
13Answer also posted as a chat bubblerender as the stamp only (§6.3)
14Example still clickable after target stampsexamples die with their target (§4.10)
15Agent value in a style/src attributeallowlist, do not escape (§8.3)
16Tags hand-rolled per blockone serializer, one escaping policy (§6.2)
17A progress number that disagrees with the rowscount the rows; there is no progress= (§4.12.1)
18A card that re-renders today’s statea card is a snapshot; emit a new one (§4.12.2)
19Subtask detail on hover onlydisclosure + aria-describedby (§4.12.3)
20A lane bar announced as progressit is a share of the board (§4.13)
21A truncated lane that looks complete+N more, always (§4.13)
22Breakpoints in a layout the agent cannot seecontainer-driven auto-fit, cols is a max (§4.14 L1)
23A draft rendered like a sent messagesent must be asserted; draft is the default (§4.15.1)
24A mailto: or live link inside a draftaddresses are text; the only affordance is the gate (§4.15.2)
25A stamp pointing at bytes someone else can changesnapshot or proxy img= / @link at stamp time (§4.12.2)
26A row parsed and then never drawnrender it or warn; never both parse and drop (§11)
27A stamp rendered as sent before deliverythe click is approval; the host writes the outcome (§4.15.5)
28A send gate that vanishes when it stampsit becomes the receipt, at the same height (§4.15.5.2, §9.2)
29A state transition that animates a box modelopacity and transform only, or the block reflows (§4.15.5.3)
30A wrapped @ header losing half its attributesheaders are one line; the parser warns on a key= continuation (§3.2)
31A chart whose bar is shorter than the number printed on ita bound may move the range, never exclude a value (§4.16.2)
32A bar chart floored above zero without saying soannounce it in the scale line and in the bars (§4.16.2)
33A chart you can see but cannot read a value offevery mode prints its numbers; the shape is aria-hidden (§4.16.1)
34A flow that drops the back edge, or hangs on itcycles are lifted out of ranking and drawn as returns (§4.17.3)
35A connect card wearing an agent-supplied logothe mark comes from a host allowlist, keyed by provider= (§4.18.5, §8.3.1)
36A partial grant recorded as connectedthe refused scopes stay on the block and in the stamp (§4.18.4)
37A connect block that goes red when the token lapsesit is a receipt of a grant, not a status light; emit a new one (§4.18.6)
38A Disconnect button on a stamped grantrevoking is a different action, not an un-answer (§4.18.6, §7.1 law I)