# StepContext.progress
URL: https://lsd.tools/docs/api-context-progress
Updated: 2026-07-17

## Parameters

| name | type | default | description |
|---|---|---|---|
| `fraction` | `float` | — | progress in `[0, 1]` (clamped to that range) |
| `message` | `str` | `""` | optional status text shown alongside the bar |

## Example

```python
@tool.shape
def heavy(t: Table, ctx: StepContext) -> Table:
    ctx.progress(0.25, "reading rows")
    return t
```

## Notes

`fraction` is clamped to `[0, 1]`. Reporting is **best-effort**: it emits a `pipeline/step/progress`
event only when a bus is set, and never fails the step if emission raises. It is cache-neutral —
calling it does not affect the resume cache.

## See also

**API:** [cancelled](/docs/api-context-cancelled) · [emit](/docs/api-context-emit) · [set_output](/docs/api-context-set-output) · [StepContext](/docs/api-context)

**Guides:** [Parameters vs ports](/docs/tools-params-ports)
