You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pr-review findings:
- The modal clears the Turnstile token after EVERY finalize attempt:
the server verifies the captcha before any other check, so a 409/422
consumed the single-use token and every retry then failed at
Cloudflare with the button still enabled — a permanent dead-end.
- The modal only renders when the prompt id matches the map on screen:
the store is module-global, so a stale id could finalize (publish)
a map the user was no longer looking at.
- The Save & Share entry point is gated on ready_to_share — finalize
hard-requires it, so the button previously walked users into a
guaranteed 409 (and a burned captcha).
- The abbreviated form renders through FormField: the hand-rolled
inputs dropped Select options (free-text states break the gallery's
exact-match state filter), zip pattern anchoring, label association,
and require_email_confirm entirely.
- create_document degrades a missing FormConfig to a normal map (log +
no draft) instead of 404ing the whole creation — a portal page can
outlive its config; test updated to pin the new decision, and a CMS
test pins the negative injection case (config-less portals get no
portalId on their create buttons).
- Moderation queue defaults to status=submitted: draft rows point at
the author's LIVE working map, which nobody consented to share yet.
- Draft registry hardening: shape-check on read, quota-safe writes
(same policy as session.ts), finalized entries pruned.
- Dead handleCreateBlankMetadataObject deleted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments