Problem statement
A Member who has run the same agent several times cannot find an earlier run. The agent page lists runs by date only, and the requests list has no way to filter by agent. Finding last week's run means opening pages one by one.
Solution
Give each run a title and show the Member → agent → runs hierarchy where they already look: a titled run list on the agent page with a "Run again" action, a filter by agent on the requests list, and the same fields in the harness tool so the coding agent can find a run without reading the screen.
User stories
- As a Member, I want the agent page to list my runs by title, so that I can find last week's run.
- As a Member, I want "Run again" to prefill the form with a previous run's inputs, so that I only change what differs.
- As a Member, I want the requests list filtered by agent, so that I see only what one agent did for me.
- As a harness, I want each request to carry its agent id and title in the tool response, so that I can find a run without parsing the page.
- As a Member, I want the title filled by my harness when it starts the run, so that I never type one.
Implementation decisions
- The request composer gains one optional title field; the harness fills it and a person may leave it empty. When empty, the title is derived from the first input field's first line.
- The title is stored in the existing request title column; the check constraint that forbids a title on agent-sourced requests is relaxed.
- One function derives the display title and is used by the agent page, the requests list, and the tool response.
- "Run again" is a link to the composer carrying the earlier request's id; the composer prefills only when that request belongs to the current Member and the same agent.
- The requests list reads the agent filter from the URL so it survives reload.
Testing decisions
- One browser test runs the same agent twice, once with a harness-provided title and once without, then checks the agent page, the requests list filter, and the tool response through visible labels and the tool's public response.
- The title function is unit tested at its boundary: harness title wins, first line and length cap, fallback order.
- Prefill authorization is tested through the composer with another Member's request id.
Out of scope
Multi-turn sessions, comparing two runs side by side, favorites or statistics, user-editable titles after the run.
Tickets, blockers first
- Title field and derived title — composer field, constraint relaxation, title function with tests. Blocks 2, 3, 4.
- Agent page lists runs with Run again — titled list, prefill with ownership check. Blocked by 1.
- Requests list filters by agent — filter in URL, agent title per row. Blocked by 1.
- Tool response carries agent and title — new fields and optional agent filter. Blocked by 1.
- End-to-end proof — the browser test across both title paths. Blocked by 2, 3, 4.
Questions only you can answer
- Should a person be able to edit a run's title afterwards, or is the harness-provided title final? The tickets assume final.