350abca2026-07-22pin cookie@0.7.2 explicitly (Kamatera npm pulled v1.x with changed exports; live deploy hardening: PDL_JWT_SECRET now set in prod .env)
29ef95e2026-07-22admin login (JWT cookie) + add-design-to-Shopify-as-DIG-item admin bar on design pages
1a53e092026-07-065x re-verify: app clean (0 real defects), B6 Firefox fixed via lsregister (real cause: LaunchServices not registered, not missing app); clickthrough red = harness artifact
4f27d5d2026-07-065x: contrarian gate — correct overclaim, record 3 real defects found+fixed+verified
20e53ca2026-07-06fix: flush search box into state.q on every load() so typing + clicking a filter keeps the search text (contrarian: search desync)
2ae1f2e2026-07-06security: stop /api/designers/:slug leaking password_hash+email; require admin auth even under PUBLIC=1 (contrarian findings)
53f0f052026-07-05designers: 15 studio personas + coherent balanced catalog split, auth schema, generated portraits
d92f3a82026-07-04Go-live prep for prestige.agentabrams.com: vision-screen all, deploy config, DB dump, runbook
37085902026-07-04Add .deploy.conf for prestige.agentabrams.com go-live
df1617f2026-07-04Exclude settlement vision_blocked/vision_review designs from storefront (designs/facets/detail/designer); surface status in admin for audit
7136fea2026-07-04Add settlement post-gen vision pass (Gemini 2.5-flash, one call/image, cost-ceiling + 429 hard-stop) and settlement_status columns
c2f385a2026-07-04Pull 1451 owned credible masters from prod (chinoiserie/stripe/other + 10 curated), reseed local catalog to 1694 designs / 6.0% novelty
eeacf3d2026-07-04Credible-first default storefront: lead page 1 with design-forward content, add Collection segment (Design-forward/Playful/All) + class filter + facet counts
- fail-closed boot if PUBLIC=1 and PDL_JWT_SECRET is unset/dev-default (cookie-forgery/account-takeover risk)
- cookie now Secure in PUBLIC mode (httpOnly+sameSite already present)
- upload restricted to raster allowlist (png/jpg/webp/gif); SVG dropped (served same-origin -> stored-XSS vector); extension derived from mimetype not client filename; slug sanitized in stored filename
- multer errors (size/type) return clean JSON instead of HTML stack trace