The sign route inserts a persistent admin_alert of type contract_counter_sign_needed naming the signer. AdminAlertBanner polls every 30 seconds, listens for an admin_alert_changed window event, and renders the open alerts. Past three open alerts the stack collapses to a one-line summary that expands into a height-capped scrollable list.
Also called: counter sign reminder · persistent alert · contract waiting on me
- 1Alert created at customer sign: 'Counter-sign required: contract for <name>' with body '<name> signed the contract. Your counter-signature is required to make it fully executed.'
- 2createAdminAlert() dedupes on type + entity so a second open alert for the same contract is never stacked.
- 3Clicking an alert of this type opens the counter-sign modal directly.
- 4Dismiss is gated behind a branded confirm dialog — 'the deliberate-action seatbelt' — for stale, void or test reminders.
- 5Counter-signing resolves every open alert pointing at that contract.
The banner's docstring records both the intent and the bug it survived: reminders are 'deliberately sticky (resolving the underlying action is the primary way to clear them), BUT a backlog must never bury the UI: past a few items the stack COLLAPSES… and every alert can be deliberately dismissed (two-tap confirm) when it's stale/void/test data.' The collapse threshold names its cause: 'the bug: 10+ stuck test reminders.'
- Counter-signatures forgotten for weeks
- An alert backlog swallowing the dashboard
- No escape hatch for stale reminders
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →