founders-break/ops
gator 3572291933 Fix reminder postal configuration and require deliberate RSVP confirmation
Link previews no longer submit answers. Failed queue attempts retain reusable drafts; recipient queues prevent duplicate retries.

Tested: 18 isolated regressions pass; 13 fail on baseline.
AI-Agent: Codex (OpenAI)
AI-Session: 01a14186-e2ee-77b1-9526-a32c58cd6a00
2026-10-22 14:05:19 +00:00
..
founders-break-reminder.js Fix reminder postal configuration and require deliberate RSVP confirmation 2026-10-22 14:05:19 +00:00
founders-break-rsvp.js Fix reminder postal configuration and require deliberate RSVP confirmation 2026-10-22 14:05:19 +00:00
README.md Fix reminder postal configuration and require deliberate RSVP confirmation 2026-10-22 14:05:19 +00:00
regression.test.cjs Fix reminder postal configuration and require deliberate RSVP confirmation 2026-10-22 14:05:19 +00:00
REPAIR_2026-10-22.md Fix reminder postal configuration and require deliberate RSVP confirmation 2026-10-22 14:05:19 +00:00

Corben function sources

These two files are the source of truth for the Corben functions behind the RSVP flow. They do NOT deploy with the site: deploy_site only serves the site, and Corben functions live in the platform, not in this repo. They are checked in so the logic is reviewable and diffable instead of only existing inside the API.

To change one, edit here and push it up:

KEY=$(grep '^CORBEN_API_KEY=' ~/.corben.env | cut -d= -f2-)
jq -n --rawfile code ops/founders-break-rsvp.js '{code:$code}' \
  | curl -sS -X PUT https://api.corben.world/functions/3d3c4bed-c073-40a4-9a32-9ff6944737dd \
      -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d @-

The reminder is cf2a1e4c-43f9-4cf4-8fc5-652c494940ae. Their env (CORBEN_KEY, LIST_ID, FROM, FROM_ADDRESS_ID, NOTIFY, and reminder POSTAL_ADDRESS) is set on the function record and is not in these files. Never paste the key into this repo.

Test without waiting for a real submission:

execute_function id=3d3c4bed-... event={"form_name":"rsvp","data":{"name":"...","email":"..."}}
execute_function id=cf2a1e4c-... event={"force":true}     # sends for real

October 22 reliability repair

Email links now display a confirmation screen. Opening or previewing a link does not POST a form. The RSVP function also rejects reminder responses without the confirmation flag, and repeated answers send no duplicate notifications. New reminder links carry their event date; stale dated links cannot answer for the current week. Existing undated links show the current event date explicitly before confirmation.

POSTAL_ADDRESS is required before campaign creation and is passed in the send_campaign delivery configuration. The reminder reuses an unsent draft after failure, records prepared versus queued state, and checks the campaign status and durable recipients before retrying. Queued, sent or paused campaigns are never re-sent. A prepared marker alone is not a successful send.

Run node --test ops/regression.test.cjs for network-isolated source tests. They mock all API calls, including mail. Never use force: true as a smoke test.