# M03-L02 — Exercises

1. **Core:** Implement `Transaction lifecycle` without copying reference code. Demonstrate: Pending, included and failed differentiated.
2. **Edge case:** Find a boundary condition and add a regression test that fails before the fix and passes after.
3. **Reliability:** Inject a duplicate, timeout, revert, or restart and explain the invariant maintained.
4. **Advanced:** Compare two designs for transaction lifecycle on correctness, gas/performance, and operational complexity.

**Done when:** tests and outputs are reproducible, no secrets are present, and trade-offs are documented.
