# `step.store_required`

Action makes several changing calls but writes no store to keep their record in.

Area 12, [Jobs and events](../topics/jobs-and-events.md); not declinable; the next step is usually the human's.

Each changing call is recorded beside the outbox of the store its action
writes, so an action that writes none needs `events: { store: }`:








```jadpo
use app { sheets }
use bakery/failures { SheetNotKept }
use bakery/events { PricesChanged }

/// Keeps a supplier's new prices as a sheet, then a copy for the
/// accountant.
action file_prices(event: PricesChanged) fails SheetNotKept -> Unit {
    var sheet: File = attempt sheets.put(encoding.to_utf8(event.price_list), FileType.csv) {
        storage_full: SheetNotKept
    }
    var invoice_copy: File = attempt sheets.put(encoding.to_utf8(event.price_list), FileType.csv) {
        storage_full: SheetNotKept
    }
    assert sheet != invoice_copy
}
```

```text
error: `file_prices` makes 2 changing calls but writes no store to keep their record in
 --> domains/bakery/actions/file_prices.jadpo:8:31
  |
8 |     var sheet: File = attempt sheets.put(encoding.to_utf8(event.price_list), FileType.csv) {
  |                               ^^^^^^^^^^ no store for the record
  reason: Each changing call is recorded before it goes out, beside the outbox of the store its action writes, so a retry can replay it; `file_prices` writes no store, itself or through what it calls, and `app.jadpo` names none with `events: { store: }`.
  next: Add `events: { store: main }` to `application { }` in `app.jadpo` (human)
  rule: step.store_required
  help: https://jadpo.dev/docs/errors/step.store_required

check failed: 1 error, 7 files
```
