ShrubberyDocs
Sign in

Shrubbery

Definition

The core data entity: a structured, consent-validated commitment row linking a Lead (assigner) to a Knight (assignee) with an objective and a deadline. The word "Shrubbery" refers to both the product and this row.

Avoid: task, ticket, item, to-do. Outside of technical DB contexts, avoid "row."

Role

A Shrubbery is the unit of accountability in the system. Every flow — capture, Handshake, CFS scoring, renegotiation, webhook sync — is either creating, reading, or transitioning a Shrubbery row in public.shrubberies.

Each row has:

  • assigner_id — the Lead who created it. Immutable after creation.
  • assignee_id — the Knight responsible. Set at capture; immutable after Pending_Handshake.
  • objective — what must be done, in plain text.
  • deadline — when it must be done.
  • status — the current state (see Lifecycle).
  • source — how it was created (smart_paste, url_drop, manual_contract, inbox_api).
  • external_system / external_id — optional; set on URL Drop and Inbox API rows for deduplication and sync.
  • raw_text / source_excerpt — the original input that generated this Shrubbery, preserved for audit.

A Shrubbery scores nothing until the Knight Handshakes. Until then it is a proposal.

Lifecycle

  • Draft — Lead is still editing. Invisible to the Knight.
  • Pending_Handshake — Lead has sent. Knight sees it in the Accord.
  • Active — Knight has Handshaked. Enters Flow Score denominator.
  • Completed — Terminal positive. Enters Flow Score numerator if on time.
  • Refused — Terminal negative. Enters Ghost Rate numerator.

Audit events Renegotiated and Edited occur within Active or at the Active → Pending_Handshake transition; they are not statuses.

Last updated: 22 June 2026