Actions Tab — Feature Guide

What it's for
The Actions tab is the consolidated home for every action item the team has committed to: retro follow-ups, planning commitments, mid-sprint TODOs, and risk-mitigation tasks. Where the per-sprint Retro panel is local to a single sprint, the Actions tab is global — it shows every action across every sprint plus project- and program-scoped items, with filters and sort that let the user spot recurring patterns and aging commitments.
The audience is scrum masters, team leads, and anyone responsible for closing the loop on retro outcomes. A team that consistently writes good retro actions but never finishes them has a different problem from a team that doesn't write retro actions at all — the Actions tab makes both visible.
The data is persisted to the app's Forge storage under per-sprint keys (scoped to your Atlassian account, removed on uninstall); the tab reads, merges, and re-keys those entries so the user can edit any item from one place. Reads come from an in-memory cache hydrated at startup, so cross-sprint merges are instant.
Top of the tab
The tab does not repeat its own name — the tab bar above already says Actions. What sits at the top is the count, N open · M done, on the left, and the + Add action button on the right of the same line. + Add action opens an inline form (described below).
Filter bar
One row beneath the count. On the left, two runs of buttons with a dot between them; on the right, three dropdowns that each carry their own name so no separate labels are needed.
- Status — All, Open, Done. All shows both sets as two folding sections (OPEN and DONE, each with a count badge). Open shows only the open set; Done only the done set. Default is All.
- Scope — All scopes, Program, Project, Sprint. Sprint narrows to actions tied to any sprint; Project shows project-level actions (no sprint); Program shows actions registered at the program level; All scopes shows everything.
- Originator: All — a dropdown auto-populated with everyone who has raised at least one action in a retro or planning session. Selecting a name narrows the list to actions that person raised.
- Assignee: All — a dropdown auto-populated with everyone who owns at least one action. The list never includes assignees with zero items, so it is always meaningful.
- Sort: Date (default) — open items oldest-first by creation date; done items newest-first by close date. Sort: Priority orders by priority band (Critical → High → Medium → Low); within a band, items keep their storage order.
The action list
Each section is a table with column headings, not a stack of cards. The open table's columns are Action · Assignee · Origin · Priority; the done table's are Action · Assignee · Closed · Origin. Rows are separated by a hairline and carry no coloured stripe down the left — the same treatment as the Risks tab, and priority has a column of its own.
Reading one row:
- Arrow and title — ▸ opens the action (see below); the action text is struck through and grey when done, with the badges beside it:
- ⚠ RECURRING (yellow) — open AND age ≥ 30 days. (There is no same-title-in-an-earlier-sprint check.)
- ORPHANED (grey) — the action's sprint no longer matches any sprint in the project (e.g. the sprint was deleted).
- One grey line under the title — everything about where the action came from, run together: Opened Mon D, YYYY, Closed Mon D, YYYY (done only), from <Sprint name> or its sprint was deleted, By: <originator>, 🔗 Rolled over N times, and Comments (N) as an underlined link that unfolds the comments in place.
- Notes — the action's notes text, when it has any, on its own line under that.
- Assignee column — the owner's name, or Unassigned in grey.
- Closed column (done table only) — the date it was closed.
- Origin column — why the action exists, not just where it was typed. For an action that mitigates a risk this is the risk's title as a link into the Risks tab; otherwise it is the sprint's name as a link that opens that sprint, or Orphaned, or <KEY> — project. When a linked risk has been deleted, an Orphaned link badge shows instead of hiding the broken link.
- Priority column (open table only) — the word low / medium / high / critical, coloured — red for critical, blue for high, near-black for the ordinary ones — rather than a filled pill.
- Mark done / Reopen · Edit · Delete — on the row itself (the delete control read ✕ until 2026-09-02; it now reads Delete, matching the Risks tab).
- Mark done / Reopen toggles status. When marking done with Auto-close risks on, any linked risk where this was the last open action closes silently.
- Edit and the row's own arrow do the same thing: they open the action's form in place, directly under its summary row, so what is being changed stays in view.
- Delete asks first: Delete action item? Delete "{title}"? This cannot be undone., with Cancel and Delete.
Add / Edit form

The form is the same shape whether the action is new or being changed: the + Add action button opens it as a card at the top of the tab; its submit button reads Add, and opening an existing action shows it directly under that action's own row.
- Action text (required) — what to do. Single-line, empty submissions are rejected.
- Notes / context — free-form text for surrounding detail (why this matters, what triggered it, references). Optional. Multi-line. Shows on its own line under the row's grey information line when present.
- Scope dropdown — Program (all projects) (the default) plus every registered project key. When a specific project is chosen, a second sprint dropdown appears, defaulting to All sprints (project-wide) and listing that project's sprints so the action can optionally be narrowed to one sprint. (The single combined sprint dropdown that also lists closed sprints appears only on the edit form.)
- Priority — dropdown with four levels: Low, Medium (default), High, Critical. Drives the word in the row's Priority column and the Priority sort order.
- Originator — optional free-form text identifying who raised the action (e.g., Tech Lead, Bob Smith); pre-filled with the current user. Populates the Originator filter. (Plain text input — no autocomplete.)
- Assignee — optional free-form text identifying who is responsible for completing the action. Populates the Assignee filter. (Plain text input — no autocomplete.)
- Mitigates (Risks) — multi-select dropdown listing every open risk; visible only when the Risks feature is on. Whichever risks are picked become the row's Origin column on save, each one a link into the Risks tab.
Save commits the action to its sprint's storage key (or to project / program scope when those are selected). When the sprint is changed during edit, the action moves between storage keys.
Recurring detection
An action becomes Recurring when:
- Its status is
open. - Its age (days since creation) is ≥ 30.
Age is calculated as today − createdAt. For done items the age is the elapsed time at close; the Recurring filter only matches open items, so a slow-but-eventually-done action won't surface here.
Bulk actions
The current build does not expose bulk-select / bulk-mark-done. Each row's buttons operate on that one action.
Empty / loading / collapsed states
- No actions yet — centred empty-state message: No action items yet. Add items from your retros or use the Add action button above — they'll appear here across every sprint.
- One section empty under filter — the empty section still renders its header with an italic No open items match the current filters. / No done items match the current filters. line, so the reader understands the filter is active and the data is not missing.
- Folding section headers — both OPEN and DONE fold, and each carries its count as a small badge on the right of its header rather than a number in brackets after the word. Default is open. The count is the number of items in that section under the current filters.
There is no explicit loading indicator because reads come from the in-memory cache (hydrated from Forge storage at app startup) — instant.
Cross-cutting modes
- Sprint mode on/off — in backlog-only projects the form's scope dropdown only offers Project and Program, and no sprint name appears in a row's Origin column.
- Estimation mode — irrelevant to actions; the tab is unit-agnostic.
- Program mode (multi-project) — the Program scope option appears in the dropdown; actions filed against Program are visible across every project.
How the numbers are computed
The count at the top left of the tab reads N open · M done — global across all sprints, all owners, all scopes, ignoring the active filters so the user always knows the project total. (There is no recurring count in it.)
The Action Item Follow-through dimension on the Team Health Pulse and the Trend widget is documented in ALGORITHMS section 11. It computes done ÷ (done + open) per sprint over the lookback window, excluding sprints with zero actions so a quiet sprint doesn't drag the score down.
Effects on other parts of the app
- Sprint Retro mode — actions filed against a sprint appear inside that sprint's Retro view on the Sprints tab. The two views share storage; an edit here updates the retro and vice versa.
- Team Health Pulse — 4th dimension — the Action Item Follow-through dimension reads from the same storage. A declining score is a quantitative signal that retro commitments aren't closing.
- Risks tab — actions can be linked to risks; ticking the last open action with Auto-close risks on closes the linked risk silently. The reverse direction (risk-side mitigation list) is the same store.
- Sprint Risks engine — Recurring actions detector — fires when at least one action has been open for ≥ 30 days across two or more sprints with the same title; the detector reads from the same storage that this tab edits.
- Notification engine — when an open recurring action transitions back to open on a new sprint, a Recurring notification fires on the Notifications feed.