Async & artifacts
When a tile runs asynchronously, its result is written to your S3 as an artifact and its progress is tracked as status. This page covers both.
Status lifecycle
An async tile moves through these states:
REQUESTED ─> RUNNING ─> SUCCEEDED
└──> FAILED
└──> CANCELLEDThe dashboard polls status while a tile is active. On SUCCEEDED, StrataBI loads the artifact and renders the block. On FAILED, the tile shows the failure message. Status rows carry a TTL and expire automatically.
SUCCEEDED is treated as failed — this matters when you write your own module Lambdas.Where artifacts live
Async results are written under a runtime results prefix in your system bucket, keyed by dashboard, session, tile, and run. Result artifacts and scratch objects are expired by S3 lifecycle rules (results after ~2 days, temp after ~1 day), so treat them as regenerable, not durable storage.
Downloading an artifact
Expose a tile's artifact for download by enabling it on the tile:
{ "artifact": { "download": true, "label": "⤓", "filename": "sales.parquet" } }This renders a ⤓ button on the tile. When a downloadable artifact exists, the button presents a time-limited link to it.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Tile stuck on "Processing…" | Async runner not invoked or status never written. Check the Lambda and status table. |
| Tile shows a failure message | The query or module raised; the message and traceback come from the run. |
| Download button missing | artifact.download not set, or no artifact produced yet. |
| Blank tile, no error | Block type can't render the result kind (e.g. a table got non-dataframe data). |
Shaleio