Public: anyone can read this; the crew can change it.

A deal that falls through is marked Fell through with a reason, leaves the clock for the Closed list labelled so, and can be reopened #97

shipped production is serving it opened this has it
opened this

Intent: about one deal in twenty never closes; today the agent can only delete it, which loses its record, or leave it cluttering the clock with overdue dates.

Done looks like:

  • [x] A deal's page has a Fell through action that asks once and takes a short reason (1 to 200 characters, validated like a decline reason, REASON_MAX), recording the day and who.
  • [x] A deal that fell through leaves the clock, This week, People, Reminders for today and the header's waiting count; it appears in the Closed list marked "Fell through" with its reason and date, apart from deals that closed.
  • [x] It drafts no reminders, follow-ups or status updates; any waiting for approval are withdrawn.
  • [x] Reopen on its page puts it back on the clock with its dates as they were.
  • [x] Over every door: an API route in the OpenAPI document, a fell_through MCP tool (and reopening), and the terminal; each asks permit for deal update, and the Activity page records it. list_deals and GET /api/deals say which deals fell through.
  • [x] The Add all to calendar file leaves out a deal that fell through.
  • [x] README says in one sentence how to mark a deal that fell through and how to bring it back.
  • [x] Tests for each point above, including a refused reason and a user who may not update the deal. bun test and bun scripts/design-lint.ts pass.

Files I expect: src/db.ts (migration), src/deals.ts, src/reminders.ts, src/week.ts, src/people.ts, src/ics.ts, src/pages/deal.ts, src/pages/clock.ts, src/routes.ts, src/openapi.ts, src/mcp.ts, src/terminal.ts, README.md.

Risks: closed today means "Closing marked done"; keep that meaning and add the new state beside it rather than overloading it. Waits on the waived-contingency issue because both change the deadline/deal model and the same migrations. No cell of contract.json changes.

commented

Reviewed pull #106 at its head: ticked A deal's page has a Fell through action that asks once and takes a short reason (1 to 200 characters, validated like a decline reason, REASON_MAX), recording the day and who.; A deal that fell through leaves the clock, This week, People, Reminders for today and the header's waiting count; it appears in the Closed list marked "Fell through" with its reason and date, apart from deals that closed.; It drafts no reminders, follow-ups or status updates; any waiting for approval are withdrawn.; Reopen on its page puts it back on the clock with its dates as they were.; Over every door: an API route in the OpenAPI document, a fell_through MCP tool (and reopening), and the terminal; each asks permit for deal update, and the Activity page records it. list_deals and GET /api/deals say which deals fell through.; The Add all to calendar file leaves out a deal that fell through.; README says in one sentence how to mark a deal that fell through and how to bring it back.; Tests for each point above, including a refused reason and a user who may not update the deal. bun test and bun scripts/design-lint.ts pass..

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs