# Run

one execution of a skill, on one item, for one person. It is how anyone knows whether something is being worked on, has failed, or has never been picked up.

**Has:** the agent · the skill and the version that ran · the item · how it began (schedule, command or Hub) · who asked · who it was for · attempts · why it failed · what it produced · when it started and finished. One run per agent, Skill and item; deleting the agent deletes its runs.

## How a run begins

- A run starts on the skill's schedule, by typing `!skill <name> <item>` in the agent's channel, or with "Run it now" in the Hub; all three are the same run.
- A skill the agent does not have cannot be run, and one switched off is refused in those words ([SKILL-GRANTED-PER-AGENT](https://tonoman.com/docs/skill#skill-granted-per-agent)).
- Anyone who may change this tenant may run a skill; a member may not ([SKILL-WHO-MAY-CHANGE](https://tonoman.com/docs/skill#skill-who-may-change)).
- A run says what it is on: a recording, or "now" for a skill that looks at the day.
- A run from the Hub is run as somebody: their channel hears the result, and where each person signs in, their own inference login answers.
- Only members the agent has met in Slack can be run as, and the page says how many are not listed and why.
- A member is matched to their agent-account by an explicit link or an exactly equal name; a partial match is refused.
  - e.g. "Alex" against "Alex Smith" → refused: they must talk to the agent once.
- A run is recorded against one agent, and is never visible to or writable from another tenant.

## Who asked, and who it was for

- A run remembers both the account that pressed Run and the person it ran for; a schedule and a command in Slack have no asker.
- The history says how each run began — Hub with the name of whoever pressed it, `!skill`, or schedule — and who it was for.

## One run per item

- Where people connect their own accounts, an item is held per person, so two people's items never collide.
- "Already being processed, or already done" is an answer the person is shown, not an error, and no second run starts.
- An item already finished is skipped rather than paid for again.
- Asking deliberately for another go — `again` after the command, or "Re-run even if already filed" — runs it afresh and reports afresh.
- A skill about now rather than about a thing is never held back: asking again gives a fresh run.
- A scheduled run belongs to the moment it was due, so a schedule catching up repeats that run rather than sending a second message.
- A scheduled run more than half an hour late is skipped.
  - e.g. down 06:50 to 07:10 → the 07:00 brief still goes out.
  - e.g. down until 15:00 → the 07:00 brief is not sent.

## While it runs

- The run is recorded as running before any work is done; if the record cannot be written, the run still happens.
- The person is told once that their item was picked up; a retry says nothing more.
- A run that hits something temporary is retried with growing waits, and waits as long as an outside service asks.
- After three launches a failing item is left for a person; asking again by hand starts it once more.

## What a person sees afterwards

- A skill's page lists its recent runs, each with its state, item, outcome, how it began, who for, when it started, how long it took and how many tries.
- A finished run carries what it produced — a summary in the words the person was told, and links to where the result can be read.
- A run's reported outcome is kept to a readable summary and a few web links; anything else is dropped.
- A failed run keeps the reason and shows it against that run.
- When no worker is reachable, or none is serving that agent, the person is told exactly that and nothing is recorded as started.
