- Step 3.5: fetch signerEmail from tokenRow after atomic claim - Step 7: accumulate pattern — read from signedFilePath or preparedFilePath as working PDF - Step 7: write to JTI-keyed _partial_ path to prevent concurrent signer collisions - Step 8a: date stamps scoped to this signer's date fields (D-09) - Step 8b: signable fields scoped to this signer's fields (Pitfall 4) - Step 9.5: JTI-keyed datestamped temp file to prevent collision - Step 10.5: update signedFilePath to this signer's partial after each signing - Step 11: remaining-token count check before completion attempt - Step 11: completionTriggeredAt atomic guard (UPDATE WHERE IS NULL RETURNING) - Step 12: status='Signed' only in completion winner block (fixes first-signer-wins bug) - Step 13: agent notification + signer completion emails only at completion - Legacy null-signerEmail tokens fall through all signer filters unchanged
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.