Guide
Counter-Offer Flow
How a Knight proposes different terms on a pending Handshake, and how the Lead accepts them.
01 · Overview
Overview
When a Knight receives a proposal that almost works, they can Counter-Offer instead of accepting or refusing. They edit objective and/or deadline while the row stays Pending_Handshake and flag pending_counter_offer. The Lead then accepts those terms into Active. This is the mirror of Renegotiation, which is Lead-initiated after a row is already Active.
02 · Actors
Actors
- Knight — assignee on a
Pending_Handshakerow; proposes the alternative in the Accord. - Lead — assigner; sees the standing counter on Garden/Oversight and accepts (or edits again).
- Squire — not involved.
03 · Flow
Flow
- Lead has already sent the Shrubbery — status
Pending_Handshake; Knight sees it in the Accord. - Knight opens "Propose alternative", changes
extracted_taskand/ordeadline, and submits. No-op if neither field actually changed. - System writes the new terms, sets
pending_counter_offer = true, logsrenegotiatedwithinitiator: 'knight', and notifies the Lead (counter_offer_proposed). Status remainsPending_Handshake. - Lead reviews the badge/card and accepts the counter-offer —
Pending_Handshake→Active, flag cleared,activated_atset; auditacceptedwithvia: 'counter_offer'. - Alternatively the path ends without Lead accept: Knight refuses the commitment →
Refused; or Lead edits the row (clears the counter flag and may re-open terms).
04 · Edge cases
Edge cases
- Only while pending — Knights cannot counter-offer an
Activerow; after Handshake they deliver or the Lead renegotiates. - No dedicated reject — there is no
refuseCounterOfferaction. Lead re-edit supersedes; Knight refuse ends the commitment. - Lead renegotiation vs counter — Lead substantive edit on
Activereverts to pending and clears any counter flag; that path is documented under Renegotiation. - Audit reuse — both Lead and Knight term changes can emit
renegotiated; readinitiatorin the payload to tell them apart. - No rate limit yet — abuse caps for repeated counters are backlog, not enforced in product today.
- Guest path — Guests on
/handshake/[token]cannot counter-offer; accept or refuse only.
05 · Related
Related concepts
Last updated: 24 July 2026