ShrubberyDocs
Sign in

Detail Sheet Actions

Overview

The Detail Sheet is the action dispatcher behind every Shrubbery card in the Garden. Clicking a card opens a 480px side-sheet without leaving /dashboard; all state-changing operations are initiated here. The action set is gated on the current (status, viewerId) pair — the Lead and the Knight see different affordances at each stage of the lifecycle.

Actors

  • Lead — the primary operator. Sends Drafts, makes edits, initiates Renegotiations, marks rows Completed.
  • Knight — can accept or refuse Pending_Handshake rows and mark Active rows Completed. The Knight accesses these same actions through the Accord, not the Garden, but the underlying mechanics are identical.
  • Squire — not involved in the Detail Sheet.

Flow

Lead opens the Detail Sheet

  1. Lead clicks a card in the Garden (or presses Enter/Space while a card is focused).
  2. Detail Sheet slides open at 480px. Displays:
    • Two-column metadata grid: Assigner, Assignee, Status, Deadline.
    • Source badge and source_excerpt / raw_text (collapsible <details>).
    • External-link button (visible when external_system is set — opens the linked Jira/Linear ticket).
    • Actions — rendered by ShrubberyActions based on (status, viewerId).
    • Timeline — the full Audit Trail for this row, newest-first.

Actions by status

Status: Draft (Lead only)

  • Send — promotes to Pending_Handshake. Knight receives a Nudge. This is the only surface where Send is available.
  • Edit fields — objective and deadline are editable in-place before Send.

Status: Pending_Handshake (Knight only, via Accord)

  • AcceptPending_HandshakeActive. A handshake_accepted event is written.
  • RefusePending_HandshakeRefused. A handshake_refused event is written. Terminal.

Status: Active (Lead or Knight)

  • Mark CompletedActiveCompleted. Available to both actors.
  • Edit (Lead only) — substantive edits (objective, deadline) trigger a Renegotiation: ActivePending_Handshake. Non-substantive edits write an Edited event and leave the row Active.

Status: Completed or Refused (read-only)

  • No actions available. Timeline and metadata are still visible for reference.

Edge cases

  • Lead viewing their own Accord row — Leads see the Detail Sheet in read-only mode for Pending_Handshake rows where they are the assigner; they cannot accept or refuse on the Knight's behalf.
  • Knight viewing their own assigned rows in the Garden — Knights who also have Lead access can see the Garden, but ShrubberyActions renders Knight-appropriate actions (Accept/Refuse) rather than Lead actions.
  • Renegotiation via Edit — there is no dedicated "Renegotiate" button. Saving a change to objective or deadline on an Active row is what triggers the Renegotiation. The Lead does not need to understand the underlying event type; the UI handles the distinction.
  • Externally-completed rows — a row closed via the Sync API shows actor_kind = api_token in the Timeline. The Detail Sheet is read-only for Completed rows regardless of how they reached that state.

Last updated: 22 June 2026