Skip to main content

Actions decision queue

Actions at /actions is where assistant-prepared work waits for a person. It is not the same as Audit → Actions, which is a worklist over Assurance findings. The page asks the server three separate questions rather than filtering one loaded page in the browser. Each lane receives its own server-owned total, pagination state, and empty result. An unreadable response withholds both the count and the claim that nothing is waiting.

Decide on what was shown

Opening a run reads its linked staged workspace. Before approval, the UI freezes the workspace reference, revision, selection fingerprint, selected item keys, exact fixed-point amounts, currencies, and stated consequences. If any selected item is missing, non-committable, omitted, or lacks readable money evidence, approval is not offered. The approval request is built from that frozen consequence. If a refresh shows that the workspace moved while the decision was open, the comparison fails instead of silently approving the new state. Rejection requires a written reason of at most 500 characters. The page reports that reason as recorded only after it finds the exact reason in the server-returned immutable history.

Coverage limit

Actions lists staged work only when it has a linked workflow_runs row in the current server-derived organization, user, and conversation session. A workspace created directly against a record may have no linked run, and the backend publishes no collection read over all staged workspaces. Such work reaches a person through its own record-specific review link and is not evidence that the Actions lane is complete over every pending decision.

Honest failures

A pre-workspace failure remains in All runs because the backend uses a left join from runs to workspaces. A legitimate completed run may say No changes proposed; a failed run shows its terminal reason instead. A lost commit response remains unknown until the exact workspace or durable receipt is reread.
The queue and staged decision sequence are shipped in source but have not been exercised end to end for this release. This page documents the enforced contract, not a claim that a production decision has completed successfully.

Verified at source

  • src/app/actions/page.tsx and src/lib/staged-decisions.ts define the three server-filtered lanes, frozen-consequence gate, coverage disclaimer, and written rejection record.
  • langgraph_chat/devcenter/agent_runs_api.py scopes runs and linked workspaces to the server-derived organization, user, and session and keeps pre-workspace failures listable.
  • langgraph_chat/greatbook_mcp/workspaces/service.py owns immutable revisions, validation, confirmation, commit, and receipts.