# XO1309: call into a dependency above its effect ceiling

A `uses` clause after a require's version in xo.mod (`require github.com/acme/billing v1.4.0 uses none`) is the effect ceiling of that dependency: every call from this module into it, and every use of one of its functions as a value, may perform only the effects listed (`uses none`: none; `fs` admits `fs.read`). The effects counted are those the dependency's function declares itself, not the effects of callbacks you pass it. A `use <dir> uses ...` line of xo.work sets a ceiling for calls from the other workspace modules. The error sits on the call, so an upgrade whose new version adds an effect fails where it matters. Review why the dependency now needs the effect; then raise the ceiling, or stay on a version within it. See core 4.2 and decision 0086.

## Example

```xo
// xo.mod: require github.com/acme/billing v1.5.0 uses none
fn total(items: List[Item]) -> Int { invoice.total(items) }   // v1.5.0 declares uses net
```

## Fix

```xo
// after review, in xo.mod:
require github.com/acme/billing v1.5.0 uses net
```

Run `xo explain XO1309` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

