The server re-checks every initial

The signing endpoint re-validates the frozen manifest against what was submitted and rejects the signature if any clause is missing — naming the clause.

What it is

On sign, the route reads required_sections off the contract row, walks each entry, and returns a 409 with 'Please initial every section (missing: <title>)' if any is absent or has no image. Only when all are present does it build the stored map with per-section timestamps and write the signature.

Also called: can't bypass initials · server validation · incomplete waiver rejected

See it
The server re-checks every initial
Prepared for
Gideon Alt
1140 Ridge Line Rd · Fair Play
Shell package$30,994
Concrete & site$8,998
Doors & windows$5,999
Trim & finish$3,999
Total
$49,990
Signature
The customer page showing the returned error naming the missing clause, e.g. 'Please initial every section (missing: Site Preparation)'. Sample data — no customer information appears here.
How it works
  1. 1Required sections are read from the contract row, never from the request.
  2. 2Each entry must have a non-empty image; the stored `at` falls back to now if the client didn't send one.
  3. 3The rebuilt map — not the client's object — is what gets persisted.
  4. 4The same route also enforces that the contract is in a signable status and rate-limits to 5 submissions per minute per IP.
Why we built it

Stated in the route: 'if this contract froze a required_sections manifest (e.g. the GCS 13-clause waiver), EVERY listed section must have a non-empty initial. Never trust the client gate alone — re-validate here.' A UI-only gate is not evidence.

The problem
  • Client-side-only validation on a legal acknowledgment
  • Trusting a submitted payload to define its own requirements
Sound familiar?
What you get
Every stored waiver is provably complete
The requirement comes from the frozen document, not the request
Timestamps are server-guaranteed

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 →