ShrubberyDocs
Sign in

Nudge

Definition

A reminder fired to the Knight (DM, email, Teams, Google Chat) when a Pending_Handshake Shrubbery is going stale. The Nudge is driven by an Inngest cron and never auto-resolves the row — only the Knight's explicit Handshake or Refuse can do that.

Avoid: reminder (too generic — a Nudge is the specific Inngest-fired notification on stale Pending rows; other reminders may exist later).

Role

The Nudge exists to keep the Accord's contents from rotting silently. A Knight who never opens the route would never see a Pending row; the Nudge is the system's outbound signal that says "you owe a response here." It does not auto-decline, does not auto-accept, and does not move the parent Shrubbery's state. It simply re-surfaces the row in the recipient's channel of choice.

The send path lives in an Inngest function (sendHandshakeNudge). The cron evaluates Pending rows older than the configured staleness threshold and emits one event per recipient channel. The first Nudge per row goes out at the threshold; subsequent Nudges follow a back-off cadence to avoid harassment. Email templates ship in two tones (Casual / Medieval); the Lead's organisation setting picks the tone.

The Squire is not involved — Nudges are deterministic, not AI-generated.

Lifecycle

Not a stateful concept on the Shrubbery side. The Nudge has its own log row (Inngest event record) but does not transition the parent Shrubbery. Per-row, possible interactions with the Nudge layer:

  • First Nudge — fired once the row crosses the staleness threshold while still Pending_Handshake.
  • Repeat Nudge — fired on the configured back-off cadence; same parent row.
  • Nudge cancelled — implicit, when the parent row leaves Pending_Handshake (Accept, Refuse, Renegotiate-replay, cancel). The next cron tick skips the row.

Last updated: 17 May 2026