| 1 | User clicks add 'orange' | ['apple', 'banana'] | No | No | ['apple', 'banana'] |
| 2 | UI updates immediately | ['apple', 'banana', 'orange'] | No | No | ['apple', 'banana', 'orange'] |
| 3 | Send POST request to /api/add | ['apple', 'banana', 'orange'] | POST /api/add {item: 'orange'} | Pending | ['apple', 'banana', 'orange'] |
| 4 | Server responds success | ['apple', 'banana', 'orange'] | POST /api/add {item: 'orange'} | Success | ['apple', 'banana', 'orange'] |
| 5 | No UI change needed | ['apple', 'banana', 'orange'] | No | No | ['apple', 'banana', 'orange'] |
| 6 | User clicks add 'grape' | ['apple', 'banana', 'orange'] | No | No | ['apple', 'banana', 'orange'] |
| 7 | UI updates immediately | ['apple', 'banana', 'orange', 'grape'] | No | No | ['apple', 'banana', 'orange', 'grape'] |
| 8 | Send POST request to /api/add | ['apple', 'banana', 'orange', 'grape'] | POST /api/add {item: 'grape'} | Pending | ['apple', 'banana', 'orange', 'grape'] |
| 9 | Server responds failure | ['apple', 'banana', 'orange', 'grape'] | POST /api/add {item: 'grape'} | Failure | ['apple', 'banana', 'orange'] |
| 10 | UI reverts to old state | ['apple', 'banana', 'orange'] | No | No | ['apple', 'banana', 'orange'] |