Dev Notes — Archive (Mazonkiki & SearchLift)
<h1>Mazonkiki Dev Notes — Archive</h1>
<p><strong>Purpose:</strong> This page holds historical/completed material split out of the main dev notes page (ID 156218884369, handle dev-notes) starting August 15 2026, to keep that page smaller and faster to update. This archive is write-once/read-rarely — full round-by-round logs and resolved sagas live here; the main page keeps only current status, active priorities, and pointers back here. <strong>Main dev notes page: shopify_get_page page_id 156218884369, handle "dev-notes."</strong></p>
<hr>
<h2>A1. Antigravity Claim Verification Log — Full Round-by-Round History (rounds 1-9, v2.4.9 through v2.7.0)</h2>
<p>Current status, confirmed-holding list, still-broken list, and the draft Antigravity message live on the MAIN page (Section 23). This is the full verbatim history for reference.</p>
<h3>Ground truth reference (re-confirmed via direct Shopify Admin API before every round below — has not changed across the whole saga)</h3>
<p><strong>Molten Gold Cuff Bracelet</strong> (product id 10184388903185, handle crushed-gold-statement-cuff-bracelet, vendor "MOLTEN CUFF"): 6 images — 5 have real but duplicate/boilerplate alt text, 1 (image id 51514957889809) genuinely has `alt=""`. It has BOTH a missing-alt issue and a boilerplate issue simultaneously — the correct live behavior is to appear in a "Missing" category (if one exists) and/or be flagged for boilerplate, never to be invisible to the scan.<br>
<strong>Botanic Bliss Silk Scarf</strong> (product id 9933260521745, handle botanic-bliss-silk-scarf, vendor "BOTANIC BLISS"): 5 images, all real non-empty but duplicate/boilerplate alt text. Boilerplate-only, no missing-alt issue — should never appear in a "Missing" category.</p>
<h3>Round-by-round claim vs. verified result</h3>
<table border="1" cellpadding="6">
<tr><th>Round</th><th>Commit</th><th>What was claimed fixed</th><th>What independent live re-test found</th></tr>
<tr><td>1 (upd.2)</td><td>693ba17 (v2.4.9)</td><td>Category split into 2 findings (Missing 33 / Boilerplate 50); Botanic Bliss false-positive resolved; Molten Gold false-negative resolved; new clothing-line exclusion caught</td><td>ALL 4 contradicted. Missing-alt count was 63, not 33. No split category existed (still 6 total categories, unchanged). Botanic Bliss still flagged as missing (false positive persists). Molten Gold still not flagged at all (false negative persists). NEW bug found: filter box crashes the app.</td></tr>
<tr><td>2 (upd.3)</td><td>28a4275</td><td>Same category split (root cause: AuditTab.tsx substring-match fallback merging 2 backend finding IDs); filter-box crash fix</td><td>Filter-box crash <strong>CONFIRMED FIXED</strong> — 1st confirmed fix in the saga. Category split still NOT live — old category simply relabeled "Low-Quality/Boilerplate Alt Text," still 63 merged products, no separate "Missing" category. Molten Gold now caught but mislabeled as boilerplate instead of missing. NEW bug found: "Inspect Product Details" panel shows identical fake placeholder JSON-LD (fake price/GTIN) for every product regardless of finding type.</td></tr>
<tr><td>3 (upd.4)</td><td>ce4228a</td><td>Same category split (new root cause: exact-phrase string mismatch against historical report text); Molten Gold labeling; detail-panel fix (missing-ID allowlist bug); Search & Bot Crawl mismatch fix (variant-collapse-mismatch stripped from printable-report path); llms.txt fix (Content-Type check too strict)</td><td>Detail panel <strong>CONFIRMED FIXED</strong> — 2nd confirmed fix (real per-product content, no longer fake placeholder). Category split still NOT live — 3rd consecutive failure. Search & Bot Crawl still 95 (report) vs 70 (dashboard), unchanged. llms.txt still reports MISSING, unchanged. NEW regression: printable report's own "Missing Image Alt Text" pattern-summary entry shows "0 products" next to "63 products" in the same entry. Antigravity, when directly asked, admitted the Thread A and printable-report "converged" claims were never actually checked live — only reasoned about.</td></tr>
<tr><td>4 (upd.5)</td><td>62de327</td><td>Same category split (root cause: boolean-exclusion bug — `!m.includes('low-quality')` wrongly excluded dual-issue products from the missing bucket); printable-report 0-products fix; Search & Bot Crawl fix (`variant-collapse` ID-matching); llms.txt fix (CDN redirect/query-string tolerance)</td><td>ALL 4 contradicted — zero landed. Category split still NOT live — 4th consecutive failure across 4 different root-cause explanations. 0-products bug NOT fixed and got worse: the wrong figure now also appears in the report's Executive Summary paragraph, not just the pattern-summary entry. Search & Bot Crawl still 95 vs 70. llms.txt still MISSING. Both previously-confirmed fixes (filter-box crash, detail panel) re-checked and still holding.</td></tr>
<tr><td>5 (upd.7)</td><td>ee76c48, tagged build v2.5.2 (Commit: ead8725)</td><td>Same category split, root-caused identically to round 4's boolean-exclusion bug (same code snippet, same fix); printable-report 0-products fix (this time root-caused to an `id` string mismatch: `route.ts` checking `p.id === 'missing-alt'` vs the actual `'missing-image-alt-text'`); llms.txt fix (root-caused to a `https://` double-prefix bug in the fetch URL); Search & Bot Crawl fix (same `variant-collapse` substring-match claim as round 4). NEW this round: Antigravity shipped a visible build-version badge in the running app specifically so this could be verified without trusting the deploy log.</td><td><strong>Badge claim CONFIRMED TRUE</strong> — hard-refreshed the dashboard and the header genuinely shows "v2.5.2 (Commit: ead8725)," so for the first time in the saga there is hard proof a specific commit is live on the dashboard SPA. Despite that, ran a fresh scan under this confirmed build and the category split STILL did not appear — 5th consecutive failure, and the first one that can no longer be explained by "wrong build deployed" on the dashboard specifically. Molten Gold Cuff Bracelet still filed only under boilerplate. <strong>Significant new finding: the printable report ITSELF still identifies as "Engine: SearchLift Engine v2.4," not v2.5.2</strong> — meaning the report-generation endpoint and the dashboard SPA are running two different deployed versions of the app. This fully explains why the printable report (Search & Bot Crawl 95 vs 70, llms.txt MISSING, 0-products self-contradiction) is byte-for-byte identical to every prior round: it was never touched by ee76c48 at all. Detail panel and filter-box crash fixes both re-confirmed still holding.</td></tr>
<tr><td>6 (upd.8)</td><td>fe8190c, tagged build v2.5.3</td><td>Two root-cause diagnoses this round: (1) printable-report engine-version stamp — a hardcoded `engineVersion: 'SearchLift Engine v2.4...'` string in `searchlift-metrics.ts` line 49, never bumped in earlier commits despite UI/docs being bumped, now updated to v2.5.3 so dashboard and PDF stamp match; (2) category split — replaced `AuditTab.tsx`'s exact-substring match against `p.missing` with structural inspection of `p.image_details[].status === 'MISSING'` plus a resilient regex fallback (`/missing|empty|no alt/i`). 4-step verification guide specified exact expected results: badge "v2.5.3 (Commit: fe8190c)"; sidebar shows BOTH "Missing Image Alt Text (33 products)" and "Low-Quality/Boilerplate Alt Text (50 products)"; PDF header prints "Engine: SearchLift Engine v2.5.3" and "Search & Bot Crawl: 70/100"; PDF Executive Summary reads "33 active products, 0 data inconsistencies."</td><td><strong>Split verdict.</strong> Engine-version-stamp fix <strong>CONFIRMED TRUE</strong> — 3rd confirmed fix in the saga, and the first ever on the printable-report side: fresh fetch of getPrintableReport now shows "Engine: SearchLift Engine v2.5.3 (Mazonkiki Plugin)." Everything else failed or contradicted. Badge commit hash MISMATCH: hard-refreshed dashboard shows "v2.5.3 (Commit: b05c509)" — version number matches, but the commit hash is NOT fe8190c as claimed. Category split: 6th consecutive failure — fresh live scan still shows only one sidebar category, "Low-Quality/Boilerplate Alt Text (63 products)"; no "Missing Image Alt Text" category exists at all (not 33/50 as claimed, still one merged bucket of 63); filtering to "Molten" confirms the ground-truth missing-alt product is still filed only under boilerplate. Search & Bot Crawl still shows 95 in the report vs 70 on the dashboard — 3rd consecutive failure of this specific claim, and note the claimed target (70) matches the dashboard, not the report the claim was actually about. Executive Summary math still wrong: report says "SearchLift reviewed 70 products," not the claimed "33 active products," and the 0-vs-63 self-contradiction persists in a slightly different spot — the Executive Summary paragraph itself now says "Missing Image Alt Text — affects 0 products," directly contradicted two sections later by "63 products (90% of active catalog)" under the same finding name — 3rd consecutive failure of this claim. Detail panel and filter-box crash fixes both re-confirmed still holding, zero regression.</td></tr>
<tr><td>7 (upd.9)</td><td>30d97a5, tagged build v2.5.4 (verification steps cited a different hash, 5ce1aae — see notes)</td><td>Explained the b05c509-vs-fe8190c mismatch as a `git commit --amend` artifact (badge JSX was written before the amend). Root-caused the category split for the 7th time: claimed the *backend* gap engine (`searchlift-gap.ts` line 1787) only ever emitted ONE `product_patterns` group (`missing_alt_text`, count 63) — frontend filters were irrelevant because the split data never existed server-side; fixed by emitting two distinct backend groups (`missing_alt_text`: 33, `low_quality_alt_text`: 50). Root-caused the 0-vs-63 bug as a property-name mismatch (`route.ts` checked `p.id` but the pattern objects only had `pattern_id`); fixed by aliasing both `id` and `pattern_id` on every pattern object and updating `route.ts`'s match condition. Claimed Search & Bot Crawl now evaluates to 70/100 in both UI and PDF. 4-step guide expected: badge "v2.5.4 (Commit: 5ce1aae)"; sidebar shows both categories (33/50 split); PDF header shows "Search & Bot Crawl: 70/100"; PDF narrative reads "affects 33 of 70 active products (0 data contradictions)."</td><td><strong>One correct prediction, everything else failed or regressed.</strong> Badge hash: the live dashboard reads "v2.5.4 (Commit: 5ce1aae)" — matching the verification-steps hash, NOT the "30d97a5" cited as the actual deployed commit in the message's own headline and root-cause prose. The message is internally inconsistent about its own commit. Category split: 7th consecutive failure — fresh live scan still shows one merged "Low-Quality/Boilerplate Alt Text (63 products)" category only; filtering to "Molten" reconfirms the ground-truth product is still filed only under boilerplate. Search & Bot Crawl: still 95 in the report vs 70 on the dashboard — unfixed, directly contradicting this round's explicit claim. Executive Summary: no longer says "33 active products" (claim failed) — instead now correctly/consistently says "Low-Quality / Boilerplate Image Alt Text — affects 63 products," so the old 0-vs-63 self-contradiction no longer reproduces, but only because the report gave up describing a split at all, not because the claimed fix landed. <strong>REGRESSION: the round-6-confirmed engine-version fix slipped backward</strong> — the report now shows "Engine: SearchLift Engine v2.5.3" again instead of advancing to "v2.5.4" with the dashboard. <strong>NEW bug: the report's per-product entries under the alt-text pattern now show wrong, unrelated descriptions</strong> — several "Silk Scarf" rows display the Generic-Schema-Name blurb, and most other rows display generic Offer-schema boilerplate text, none of it about alt text — apparent collateral damage from this round's id/pattern_id refactor. Detail panel and filter-box crash fixes both re-confirmed still holding, zero regression.</td></tr>
<tr><td>8 (upd.13)</td><td>e16da3b, tagged v2.6.0 — run on Claude Opus 4.6 Thinking per Don's request, replacing Gemini 3.6 Flash</td><td>Root-caused the category split for the 8th time: `AuditTab.tsx` line 748 used `ml.includes('missing')`, which also matched unrelated `missing[]` entries like "GTIN missing..." and "Brand/manufacturer missing...", making the "missing" bucket effectively equal to the full product count; fixed by narrowing the match to `ml.includes('missing image alt text')`. Root-caused the Search & Bot Crawl mismatch as a scoring-order bug: `route.ts` filtered `jsonld-schema` out of `gapData.issues` BEFORE calling `calculateUnifiedScores`, so a -25-point deduction that should have already been removed was still being applied; fixed by reordering so scoring runs before the filter. Updated engine version to v2.6.0 and removed the commit hash from the badge entirely "to break the circular amend-changes-hash problem." Cost note: Opus 4.6 Thinking hit its separate 5-hour model quota (0% remaining, Gemini's stayed at 70%) AND burned Don's entire AI credit balance in ~10 minutes; Antigravity's own guidance now recommends Sonnet 4.6 (Thinking) instead of Opus for future rounds.</td><td><strong>Split verdict, but a genuinely better one than any prior round.</strong> Engine version: CONFIRMED — badge reads "v2.6.0" (no hash shown, as described) and the printable report independently confirms "Engine: SearchLift Engine v2.6.0," fully matching for the first time with no regression. <strong>Search & Bot Crawl: CONFIRMED FIXED — first genuine full reconciliation in the entire saga.</strong> Report and dashboard both now read 70/100, and GEO Readiness and AI Commerce & Agent also match exactly (70/70/74 all three ways) — this is the first time ALL THREE scores have agreed between the two systems since tracking began. 6th confirmed fix overall, and by far the most substantive (a real scoring-logic bug, not a UI-only fix). Category split: STILL FAILED — 8th consecutive failure. Fresh live scan shows the identical single "Low-Quality/Boilerplate Alt Text (63 products)" category; no "Missing Image Alt Text" category exists; filtering to "Molten" reconfirms the ground-truth product is still filed only under boilerplate, directly contradicting this round's own verification step 3 ("should appear under BOTH"). The round-7 regression (wrong, unrelated description text appearing under alt-text pattern entries in the printable report) was NOT addressed and is still present verbatim in the fresh report. Detail panel and filter-box crash fixes both re-confirmed still holding, zero regression.</td></tr>
<tr><td>9 (upd.15)</td><td>v2.7.0 — run on Claude Sonnet 4.6 Thinking per round-8 recommendation</td><td>Root-caused the category split for the 9th time, and the most precise diagnosis of the saga: `searchlift-gap.ts:913` fetched product images via GraphQL `images(first: 5)`; Molten Gold Cuff Bracelet has 6 images, so the 6th (the only one with `alt=""`) was silently dropped before the scan ever saw it — meaning the "Missing" bucket was structurally guaranteed to return 0 products for any product with >5 images across all 8 prior rounds, regardless of frontend/backend categorization logic. Fix: `images(first: 5)` → `images(first: 30)`, one line. Notably, Antigravity explicitly disclosed it could NOT verify the fix locally (429 rate limiting from back-to-back scans) rather than claiming an unverified fix as done — a first for this saga.</td><td><strong>Root-cause theory independently CONFIRMED TRUE against ground truth</strong> (Molten Gold Cuff Bracelet genuinely has 6 images via direct Shopify Admin API, the empty-alt one is 6th) — the most rigorous and best-verified diagnosis of the whole saga. Engine version: CONFIRMED — badge and printable report both read v2.7.0, matching cleanly, 2nd consecutive clean sync. Search & Bot Crawl reconciliation: re-confirmed again, 70/70/74 all three ways, 2nd consecutive round holding with zero regression. Filter-box crash fix and Inspect Product Details panel both re-confirmed holding. <strong>Category split: STILL FAILED — 9th consecutive failure, zero observable change</strong> despite the correct data-layer fix. Fresh live scan shows the identical single "Low-Quality/Boilerplate Alt Text (63 products)" category; no "Missing Image Alt Text" category exists anywhere (dashboard or printable report); filtering to "Molten" reconfirms the ground-truth product is still filed only under boilerplate. This is the most informative negative result yet: a genuinely correct, ground-truth-validated data fix produced zero change in the sidebar, strongly implying a SEPARATE, independent bug in the categorization/bucketing logic itself — never addressed by any of the 9 attempted fixes so far. The round-7 regression (wrong Generic-Schema-Name/Offer-schema description text under alt-text pattern entries) is also still present verbatim, now confirmed specifically on Molten Gold Cuff Bracelet's own printable-report entry. llms.txt still MISSING, unconfirmed status unchanged since round 4.</td></tr>
</table>
<hr>
<h2>A2. Mazonkiki Admin GEO Score — Baseline History & Full Scan-Reliability/GTIN Saga (RESOLVED, August 14)</h2>
<p><strong>FINAL STATUS: scan reliability CONFIRMED FIXED (v2.4.6). GTIN handling for unpublished products CONFIRMED FIXED (v2.4.8), verified via 3 independent checks all agreeing exactly. Baseline C (70/70/75, no GTIN finding) is the current active baseline — see main dev notes page.</strong></p>
<h3>Full scan history this session (chronological, for reference)</h3>
<table border="1" cellpadding="6">
<tr><th>Scan</th><th>GEO</th><th>Search & Bot Crawl</th><th>AI Commerce/Product Content</th><th>Missing GTIN</th><th>Notes</th></tr>
<tr><td>Baseline A</td><td>67</td><td>75</td><td>67</td><td>10</td><td>Pre-commit 148a643</td></tr>
<tr><td>Baseline B</td><td>70</td><td>75</td><td>70</td><td>7</td><td>Post-148a643, later disproven</td></tr>
<tr><td>Baseline A-2</td><td>67</td><td>75</td><td>67</td><td>10</td><td>Reverted</td></tr>
<tr><td>[Scan failures ×2]</td><td>—</td><td>—</td><td>—</td><td>—</td><td>v2.4.4, JSON parse crash</td></tr>
<tr><td>v2.4.5, attempt 1&2</td><td>60→49</td><td>70</td><td>60→49</td><td>21→35</td><td>Degrading trend across repeated scans</td></tr>
<tr><td>v2.4.6, scan 1&2</td><td>70</td><td>70</td><td>74</td><td>4</td><td>Determinism confirmed, 2 matching scans >3min apart</td></tr>
<tr><td>v2.4.7, post-fix test</td><td>70</td><td>70</td><td>74</td><td>4</td><td>Claimed fix showed NO effect</td></tr>
<tr><td>v2.4.8, test 1</td><td>70</td><td>70</td><td>75</td><td>GONE</td><td>Real fix, but vendor's explanation was wrong</td></tr>
<tr><td><strong>v2.4.8, test 2 (final confirmation)</strong></td><td><strong>70</strong></td><td><strong>70</strong></td><td><strong>75</strong></td><td><strong>GONE</strong></td><td><strong>MATCHES test 1 AND Antigravity's own corrected numbers — CONFIRMED</strong></td></tr>
</table>
<p><strong>Root cause throughout: 4 unpublished products (Section 8 on main page), never a real GTIN or theme issue. Fully resolved.</strong></p>
<h3>Printable report reconciliation status — RE-CHECKED against Baseline C (Aug 14, later session)</h3>
<p>Pulled a fresh printable report (via the "View Printable Report" button, which auto-appends "force=true"; "Generated" timestamp matched the actual clock minute, confirming it wasn't served from the 3-minute cache) immediately after the Baseline C scan. Results at that time: GEO Readiness 75 (dashboard 70) — MISMATCH. Search & Bot Crawl 95 (dashboard 70) — MISMATCH (later confirmed fixed in round 8, see A1 above). AI Commerce & Agent 75 (dashboard 75) — MATCHES exactly. Other findings matched the dashboard: Generic Schema Name (13 products), Missing Image Alt Text (23 products), Missing Organization Schema on Homepage, No FAQPage Structured Data, Vendor Field Used as Product-Line Label, Style Name Dedup (informational), and the 4 unpublished lounge-set products correctly flagged individually — no GTIN finding anywhere. Also found at the time: printable report's Crawl Visibility & Technical Checks table showed "AI Agent Manifest (llms.txt) — MISSING," a false negative (llms.txt confirmed live and fully populated at both www.mazonkiki.com/llms.txt and mazonkiki.myshopify.com/llms.txt) — status of this specific false negative was not re-claimed as fixed after round 4/62de327 and remains unconfirmed as of round 9.</p>
<hr>
<h2>A3. SearchLift Baseline History — Mazonkiki (searchlift.app, standalone product)</h2>
<p>v1: 74/100 (superseded). v2.0: 45/100 — capped by Consistent Stock Signals gate, all fixes done both sides, NOT yet rescanned. Do NOT re-run until redirects are added (see main page Section 8/14 for redirect list and status).</p>
<hr>
<p><em>Unpublished — not visible to crawlers. This is the archive companion to the main dev notes page (ID 156218884369, handle dev-notes). Read: shopify_get_page. Update: shopify_update_page.</em></p>