MTL β OPEN LOOPS (living, deduped)
_Canonical open-items list. Updated 2026-07-27. Re-surface every session until closed._
_Supersedes the dated snapshots OPEN-LOOPS-AUDIT-2026-05-31.md + PINTEREST-STATUS-AND-OPEN-LOOPS-2026-05-31.md._
_Reconciled 2026-07-27 against TASKS.md + MTL-MASTER-TASK-TRACKER.html. Items not mentioned in the 07-27 state are carried and tagged (carried β confirm still open) so nothing is silently dropped._
---
π’ STORE STATUS - LIVE / PUBLIC (confirmed 2026-07-29)
memorythatlasts.com is fully launched, public, and meant to be discoverable - no storefront password, not pre-launch/gated (Kayla confirmed 2026-07-29). Etsy shop (62435306) likewise live. This is settled: do not treat the store as pre-launch or re-add a storefront password.
---
β³ Awaiting Kayla β decisions / approvals (current 07-27)
1. Zodiac HOMEPAGE tile decision ("Daphne butter" = the cat-paw slider; using it would duplicate the Pet tile) β blocks the Shop All collage rebuild.
2. Approve the 3 regenerated birth-flower videos (July / Oct / Nov heart clips β gold holds, no flicker; on mtl-video-review.pages.dev).
3. Approve the homepage tile row (AM + daisy) live push.
4. Approve the zodiac collection preview (before the live filter switch).
5. _Optional / one-clicks:_ hit "Run now" on the Etsy retest scheduled task (etsy-rest-activation-retest) Β· consolidate the 2 duplicate Cloudinary accounts (dl7mguxyk operational vs dafx1ucr4 new).
### Carried awaiting-Kayla (β€07-22, not in the 07-27 state β confirm still open)
- Approve the heart-necklace price pilot link ($39 base / ~$35.10 in sale) β then roll to the rest of the heart necklaces.
- Birth-flower homepage listing: pick-your-month master vs January/Carnation _(may be the same call as tile-row #3)_.
- Approve image-swap frames before any upload (24 rings image-1 + Shopify Zodiac vs Shop-All tile differentiation).
- Approve Etsy profile v2 banner version (refined ChatGPT vs current v2).
- Klaviyo popup β Name Bar image publish (Kayla approves image first).
- PVD finish-label spelling standardization (3 variants; 0 compliance issues) β pending Kayla's yes.
---
π§ In flight β Claude building (no Kayla action yet) (current 07-27)
6. Shopify Zodiac collection β adding Sign + Product-Type filters (via metafields) + site-wide free-ship badge on DEV. Live filter switch held for Kayla (#4).
7. Hero image audit + Caitlyn-style plan.
8. Store-wide verify of the approved CIRCLE finish swatches.
### Carried in-flight (β€07-22, not in the 07-27 state β confirm still open)
- Net-profit calc, small heart necklaces @ $39.
- SEO question-first review doc (10 rewrites + master-sheet cols U & W); best single fix = restore "ladybug necklace" (893/2,172) to the ladybug listing.
- Top-4 featured homepage DEV preview.
- Speed: DUPLICATE Google tag audit + fix;
mtl-required-color.js DEV test (deferred).
- Printify + Pinterest API wiring β Pinterest "pin engine" (top external-traffic play).
- Alt-text deep review.
- Etsy profile v2 banner build.
### Carried from 07-26 (not in the 07-27 state β confirm still open)
- Gold-outside paw variant (Cat + Dog Paw hidden bar, Printify
164457): relabel both variants, set new one to $52 parity (Shopify=Etsy), DEV-first live-preview fix, gold-outside Kittl mockup still needed (pending Kayla β show image first), Etsy shipping-profile + processing-time fix, customer test.
- Paw hidden-bar cost confirm β then lock the price (master sheet shows $59 vs $52; confirm exact Printify base cost before setting a floor).
- Etsy processing time β "Ships within 2 to 5 days" shop-wide (not just the paw bar).
- Surge password reset (mtl-snippets-master.surge.sh, under hello@memorythatlasts.com) so future deploys aren't blocked.
- Etsy title/desc rows 58β96 (per-row Etsy IDs = master sheet col G) β _may be closed by the 07-27 88-listing push per the TASKS.md banner; verify._
---
π Parked / low-priority (current 07-27)
- Snippets rows 22β60 await Kayla's keyword picks (all zodiac β signet rings 23β34, heart signets 36β47, coins 49β60; 35 & 48 = spacers; templatable per format).
- OpenRouter balance ~$7.69 remaining (top up before the next video/image batch).
- Pinterest API token - CORRECTED 2026-08-05. Not a blocker on anything. See the Pinterest section at the end of this file. Catalog, Product Pins and Tailwind publishing all work with no token.
- Etsy API new key propagating β new Seller App
memory-that-lasts-shop-manager (key pi8kfm4tjjzwxeetos7kcjcy, 10 QPS / 10K QPD, listings r+w); OAuth tokens saved to .etsy-oauth.env; REST gateway still 403 (key propagating); the hourly scheduled retest etsy-rest-activation-retest flips it to live automatically. Old apps banned.
- Antonio (Minimalist) Printify weight bump 300β~600β700 + normalize new font-template prices to $42 β DECLINED/parked 07-11 pending Kayla's across-the-board price decision (which the $39 pilot may supersede).
- Homepage meta paste (shipping-copy standardization tail).
---
𧨠Latent traps (must not forget)
- Empty ShineOn + Branvas paid U.S. shipping profiles β 0 products, but a latent free-shipping trap. Delete them.
- FAQ stale font names (Montserrat / Playfair) β parked per Kayla; unpark when ready.
- Pet / paw listings saturated (live eRank) β need a dedicated long-tail eRank session; can't fill 13 validated tags without it.
- Desktop Commander Full Disk Access (RECURRING) β theme deploys + ops writes stall when FDA drops. Re-check after any macOS/app update.
---
β
Recently closed (07-26 β 07-27) β for the record
- Snippets rows 2β21 finalized in column AK, approved, published LIVE to BOTH Shopify + Etsy; AKβlive verified character-identical on all 18.
- Returns standardized by type β PRE-ENGRAVED = "free remake or replacement / returns only if damaged"; PERSONALIZED (rows 19β21) = final-sale. Policy column synced.
- Listing structure standardized β shipping reads "Ships within 2β5 Days." on all; section order set to the Row-2 order.
- Keyword pick cards on the Cloudflare doc (
mtl-snippets-rows-2-17.pages.dev) now through row 60 (rows 23β60 all zodiac; 35 & 48 spacers).
- Header-by-name SOP saved (
SNIPPET-LISTING-PUBLISH-SOP.md); column drift noted (Title now col I; BV/BR/BT have blank headers).
- Videos β all 168 normalized to 1080Γ1080; "Video Audit" sheet tab (avg 7.8/10); July/Oct/Nov birth-flower heart clips regenerated & fixed (gold holds, no flicker), hosted at
mtl-video-review.pages.dev; Cat sliding-bar uses Kayla's own real video (no regen).
- Etsy free shipping hardened β all 88 listings on the $0 free profile + shop guarantee; bio changed "over $35" β "on every order".
- Etsy API β new approved Seller App
memory-that-lasts-shop-manager; OAuth access+refresh tokens saved; ops docs updated; old apps banned. _(Key still propagating β see Parked.)_
- OpenAI env β stale org-id commented out (project-scoped key); working.
- Full connector/API health check β all green. _(The old "Pinterest re-auth needed" flag was misleading: re-auth only affects programmatic reads, not the catalog or publishing. Corrected 2026-08-05.)_
- Cloudinary β stale
CLOUDINARY_URL.txt retired (renamed + readme); flagged the 2 duplicate "Memory That Lasts" accounts (dl7mguxyk operational vs dafx1ucr4 new) to consolidate.
---
π Standing rules (don't re-break)
- Pricing set in Etsy + Shopify directly, never Printify (cost-only; never copy-to-store); prices always match across channels.
- Staging/DEV theme: never a remembered id. Run
./mtl-preflight.sh and use the CURRENT DEV it prints (most recently updated unpublished theme).
- DEV-first, mobileβdesktop verify, never publish DEV; deploy live-direct after test.
- Free US shipping baked into price β verify nothing silently charges. Canada is live at a flat CA $9.39 rate on both platforms (verified 2026-08-05); we are not US-only.
- Deploy the Cloudflare Worker via
wrangler deploy (never the dashboard editor).
- Never expose Printify / Fulfill Engine / POD; keep Kayla anonymous; stainless never "silver"; max 3 finishes (Gold / Rose Gold / Stainless).
---
### OPEN β Judge.me reviews widget: confirm live render in INCOGNITO (2026-07-28)
- Judge.me reviews mount DEPLOYED 2026-07-28 to whatever theme was MAIN on that date, in
sections/mtl-personalization.liquid (shared β all personalized SKUs). Backup: /backups/mtl-personalization.liquid.LIVE-pre-judgeme-mount-2026-07-28.bak
- Verified: mount present in published server HTML, no Liquid error, no silver/POD text, Judge.me v3 recognizes the mount (adds jdgm--done-setup-widget). Theme rename dropped "silver" (now "β¦Β· stainless").
- NOT yet visually confirmed: the empty "Be the first to write a review" + Write a review CTA painting for a real visitor. Could not open a clean incognito/logged-out session from the agent browser (logged-in staff + active theme preview suppresses the widget body β same false-empty symptom that started the task).
- ACTION: Kayla (or an incognito-capable check) open the live product page in a private window and confirm the Customer Reviews block shows the empty state + Write a review button. If it does NOT paint even incognito, fallback = place the Judge.me "Review Widget" theme app block in a NON-stealth section of each product template.
- Durability documented: THEME-SOP-JUDGEME-REVIEWS-MOUNT.md + CLAUDE.md pointer.
---
### RESOLVED 2026-07-28 β Judge.me reviews widget NOW RENDERS for logged-out visitors
- Proven (clean cookieless Playwright, NOT staff/preview): the legacy
#judgeme_product_reviews div does NOT paint on this store (Judge.me v3). Replaced with the official Judge.me Review Widget app block in a new visible section sections/mtl-reviews.liquid, added to ALL product templates.
- VERIFIED logged-out (desktop 1280 + mobile 390): "Customer Reviews / Be the first to write a review / Write a review" renders, 1 widget, no overflow, no silver/POD. Confirmed on 3 template types (personalizer, personalizer-proper, default product.json).
- Files live: sections/mtl-reviews.liquid (new) + all templates/product*.json (mtl_reviews section+block) + legacy div removed from sections/mtl-personalization.liquid. Backups in /tmp/mtl_backups + Ops/backups.
- SOP updated: THEME-SOP-JUDGEME-REVIEWS-MOUNT.md (working app-block solution + re-apply steps + logged-out verification note).
---
### RESOLVED 2026-08-04 - Birth flower month filter is now real URL state (server-side)
- Root cause of the reported "months PERSIST and ACCUMULATE across page loads": NOT storage.
sections/mtl-bf-collection-filter.liquid ran defaultKeys = [thisMonth, +1, +2] then defaultKeys.forEach(k => selected.add(k)) on EVERY load, so a cold load always landed on a rolling 3-month pre-filtered subset with no explanation, and a reload silently discarded the visitor's choice. Tiles were <button> toggles with zero URL state, so within a session clicks accumulated. Deterministic, which is why a session hunting for sessionStorage could not reproduce it. DELETED. Do not reintroduce any client-side default selection.
- Correction to prior sessions: the live collection tiles were NEVER in
mtl-birth-flower-picker-deep.liquid (that 90KB file renders on templates/page.birth-flower-guide.json). The collection template renders exactly one section: mtl-bf-collection-filter. Editing the deep file would have changed nothing on the collection and would have broken the guide page.
- Rewritten: month tiles are 12 real
<a> anchors on filter.p.m.custom.birth_month, built from collection.filters url_to_add / url_to_remove. Grid switched from collections['birth-flower-necklaces'].products (all 24, JS show/hide) to collection.products so Shopify filters server-side. URL and grid can no longer disagree.
- New metafield
custom.necklace_style (definition 254296785045), values "Heart Pendant" / "Vertical Bar", 12 each, all 24 populated, 0 errors. Tag filtering was NOT viable: these products carry 50 distinct tags.
- Style chip row renders ONLY when the necklace_style filter exists in
collection.filters, so there is never a dead control on the page.
- Deployed live theme 159936544917 (MTL-LIVE-818PM). Backup:
.mtl-work/backup-live-20260804-205418/LIVE_159936544917_mtl-bf-collection-filter.liquid. Pre-change DEV and LIVE copies: .mtl-work/backup-20260804-200830/.
- Redundant
sections/mtl-birth-month-filter.liquid DELETED from the then-current DEV theme (2026-08-04) so nobody wires it in later.
- Verified live with no preview cookie: all 12 months return exactly 2 products (Heart + Bar) with 1 active tile; cold load 24 cards and 0 active tiles; back button returns to unfiltered with 0 active; 390px gives 3 tiles per row at 89x66 tap targets with no horizontal overflow; 1440px gives 6 tiles per row with no overflow.
- Birth month stays OFF the indexing whitelist (9 of 12 month terms under 20 Etsy searches).
snippets/meta-tags.liquid untouched. States keep the bare canonical.
---
### OPEN - Kayla click: add "Necklace style" filter in Search and Discovery (2026-08-04)
- The Heart / Vertical Bar chip row will not appear until this is added. The metafield is already created and fully populated.
- Shopify admin > Apps > Search & Discovery > Filters > Add filter > source Metafield > "Necklace style" (
custom.necklace_style) > Save.
- URL: https://admin.shopify.com/store/qxjxh9-1t/apps/search-and-discovery/filters
- Worked when: the chip row (All Styles / Heart Pendant / Vertical Bar) appears on /collections/birth-flower-necklaces, and
?filter.p.m.custom.birth_month=March&filter.p.m.custom.necklace_style=Heart+Pendant returns 1 product reading "1 March piece".
---
### OPEN - Birth Month filter values sort alphabetically, calendar order wanted (2026-08-04)
- NOT changeable via Admin API. Search and Discovery filter value ordering is app-owned config with no public API surface. Needs a click.
- Search & Discovery > Filters > Birth Month > Sort: change "Automatically" to "Manually", then drag values into Jan through Dec order. Save.
- LOW priority: this only affects the theme's own filter sidebar. The MTL month tiles are hardcoded calendar order and are already correct.
---
### OPEN - Two pre-existing defects in sections/mtl-birth-flower-picker-deep.liquid (2026-08-04) - DO NOT TOUCH CASUALLY
- HIGH BLAST RADIUS. This 2497-line file owns Klaviyo email capture (list Vitqr6) AND SMS opt-in (list X6ThVz), Klaviyo onsite identify, GA4
select_birth_month, Pinterest lead tracking plus pinit.js, two separate /cart/add.js quick-add paths, cart drawer opening and cart count refresh, the zodiac cross-sell, and the compare-two-dates module. It renders on templates/page.birth-flower-guide.json and owns that page's H1. Any edit risks email and SMS capture plus all analytics.
- Defect 1, line 1569, ReferenceError:
dd is used but never declared in the date-input handler. Every 4-digit MM/DD entry throws. Tile selection at line 1567 has already fired so the picker partially works, but the throw means showZodiacForDate, showEmailCapture, month nav and Pinterest buttons never run from the date-input path. Email capture is therefore silently suppressed for anyone who types a date instead of tapping a tile.
- Defect 2, line 1294, unclosed div:
<div class="mtl-bf-deep__products"> is opened and never closed. The zodiac cross-sell block, the "see all flower meanings" links, and the cart toast (lines 1441-1472) are all nested inside a display:none container until a month is selected. The toast likely never shows on a first add.
- Also present: roughly 140 lines of dead CSS (172-318) and 55 lines of dead JS (1680-1706, 2135-2159, 2215-2235) for a shape-selector and preview UI that no longer exists in the markup; schema settings
show_date_input and show_preview are never read; PRODUCT_LOOKUP (1709-1806) hardcodes handles, variant IDs and CDN image URLs snapshotted 2026-05-03 and goes stale silently.
- NOT fixed in the 2026-08-04 pass, by decision. Needs its own scoped session with Klaviyo capture regression-tested before and after.
---
### OPEN - Some birth flower product images returning 502/504 from Shopify CDN (2026-08-04)
- Observed during live verification:
carnation-necklace-1.jpg and violet-flower-necklace-1.png returned 504, january-carnation-necklace.png returned 200. Mixed, so likely transient CDN.
- PRE-EXISTING, not caused by the filter rewrite. Same
product.featured_image | image_url call as before.
- ACTION: re-check within 24h. If still failing, re-upload the affected product images.
---
### Pinterest, verified live in browser 2026-08-05 - NOT blocked, just IDLE
Working today with NO API token:
- Catalog
4815957580684: 261 ingested, 0 failed, 0 warnings, 100% of data source, last ingestion Aug 5 5:46 AM EDT, no ingestion issues.
- Distribution: 261 approved, 0 not approved, 0 limited, no distribution issues. Verified Merchant, 5.1k monthly views.
- Shopify side: publication
196385898645, 89 of 89 products published.
- Tailwind CAN publish without Pinterest API write access. PROVEN, not assumed: Tailwind is logged in, MemoryThatLasts1 is connected, and it has a real published-pin history to her account (Jun 21, Jun 19, Jun 15, Jun 14, Jun 12, Jun 6 x2, Jun 5). Our app has never held write scopes. Tailwind publishes under its own Marketing Partner authorization. This makes the Standard access application non-blocking.
The actual gap is idleness, not access:
- Tailwind: 0 pins scheduled, 0 published last week / this week / this month, last publish Jun 21 (about 6.5 weeks). Daily goal 5. SmartSchedule slots already generated 3 to 5 per day through mid-August. Credits 400/mo, 0 used.
- Leftover Tailwind draft "ALL SMALL HEARTs" has no boards selected and a canva.com destination URL** instead of memorythatlasts.com. Broken as a product pin, do not schedule as-is.
- Four boards sit at ZERO pins: Personalized Name Jewelry, Engraved Necklaces, Meaningful Gift Ideas, Social. Only Pet Parent Jewelry (6) and Pet Memorial Jewelry (5) have content. 97 pins total.
MY ERROR, needs Kayla's yes: I created a junk board on her live profile, zz-sandbox-isolation-test (0 pins, 2026-08-04). My earlier claim that sandbox writes were discarded was WRONG. Truth: sandbox writes land on the PRODUCTION account while sandbox reads return empty, which is what fooled me. Never run a write against the sandbox host again. DECISION: delete zz-sandbox-isolation-test? (y/n)
Standard access, real picture: form at /apps/1565734/upgrade/ requires a video demo (required field) showing how the app authenticates Pinterest users plus main features, mp4 under 2GB, plus app name, company name, website, privacy policy link, app purpose, use cases, audience. All text fields are answerable from what we have. The video is the only real blocker and it cannot be recorded until OAuth completes. Pinterest publishes no SLA, only "reviewed regularly", decision by email. Not urgent.
Token, for completeness: app shows Trial access active, redirect URI http://localhost:8085/callback registered, OAuth one approval away. The approval must happen in a Chrome on the Neo Mac (callback listens on localhost:8085 there; the connected browser is Indigo Computer). The token buys programmatic reads, reporting and pin analytics only.
Full evidence: PINTEREST-TOKEN-TRUTH-2026-08-04.md.