{
  "schema_version": 1,
  "updated_at": "2026-10-02T03:05:24.891563+00:00",
  "scope": "Supplement the existing goal contract with explicit screenshot evidence; do not change deliverables, criteria or check states. Frontend-only production remains with the pinned Sol Ultra executor.",
  "capture_file_pattern": "criterion-id__slot-id__asset-id__width__state__revision.png",
  "review_protocol": [
    "Capture actual deployed interfaces, not generated mockups or a screenshot of a green verification badge. Record deployed URL/build, asset/day ID, state, viewport, timestamp and screenshot file/URL. Wait for real fonts/images to finish loading. Customer UI is mobile only.",
    "Prepare the exact state described in each slot. A capture group may require every day, every variant, multiple sections or several state images. Use readable section screenshots; do not shrink a long page to hide unreadable copy. Include both the control/action and its result when relevant.",
    "Blind phase: give a fresh independent Luna the actual screenshot(s), asset identifier and viewport, without the expected verdict or this acceptance rubric. Ask it to describe visible content, reading order, obvious next action and defects. Save its actual observations verbatim. Inference about the audience must be labelled as inference.",
    "Rubric phase: after the blind description is saved, give the reviewer the criterion and visible-indicator list. Check what the screenshot actually supports, call missing/unreadable states insufficient, and distinguish UI observations from source or behavioral claims.",
    "Fix material defects, then take fresh screenshots from the changed deployment at the same viewport/state and obtain independent re-QA. Record before/after, not just “fixed”. Capture the full required family; one good day or landing does not stand in for all fourteen or all four.",
    "Fill real screenshot URLs and actual Luna report/observations into the slot captures list. Keep separate source comparisons, playback/interaction/save/readback receipts and inventory/model proof where required. The executor marks a criterion verified only after all of its evidence passes; the placeholder helper never changes check states."
  ],
  "capture_record_example": {
    "url": "https://your-existing-review-route/evidence/day-02--390--saved.png",
    "asset_id": "day-02",
    "state": "saved reflection",
    "viewport": "390x844 CSS px, DPR 1",
    "captured_at": "ISO timestamp",
    "deployed_url": "https://your-existing-review-route/day-02/",
    "luna_observation": "Actual blind observation, not the desired result",
    "luna_report_url": "/absolute/path/to/real-report.md"
  },
  "criteria": {
    "one-review-layer": {
      "slots": [
        {
          "id": "outer-comment",
          "title": "One outer review layer, selected asset",
          "target": "Existing September master, with a visible ad or landing card and the OUTER comment selection marker/composer.",
          "setup": "Enable review mode on the master; select a specific asset card. Expand its embedded screen while keeping the outer asset identity visible.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Capture outer selection and expanded asset. Inspect every embedded document for duplicate toolbars; include one readable landing example.",
          "must_see": [
            "The selected asset has a stable identity and a precise outer selection/marker.",
            "Only the master exposes the review toolbar/composer. The embedded customer interface remains unobstructed.",
            "The marker refers to the intended asset or section, not an unrelated iframe boundary."
          ],
          "reject_if": [
            "A second toolbar/comment composer appears inside the iframe.",
            "The selected target is ambiguous, or a review overlay hides the customer copy."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Preserve the old document ID and saved edit/comment records. Disposable-fixture persistence and readback receipts are required. A toolbar screenshot does not prove remote saving. If the shared comment service is unavailable, disclose it and preserve records rather than marking persistence passed."
      ]
    },
    "every-existing-asset": {
      "slots": [
        {
          "id": "critique-context",
          "title": "Asset and concrete audience critique together",
          "target": "Old master asset cards and section-level landing critique.",
          "setup": "Expand the existing asset and its saved critique at readable scale.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "For every inventory asset attach asset-ID-linked screenshots. Landings require each section-level critique and the section it refers to.",
          "must_see": [
            "The actual creative, email or landing passage being criticized is readable.",
            "Critique identifies why overview is difficult, the likely reader interpretation, a specific weakness and a concrete replacement/change.",
            "The suggested change concerns this asset and its next action; it is not a generic CRO checklist."
          ],
          "reject_if": [
            "Only a summary says assets were reviewed.",
            "Critique could apply unchanged to any asset, or the relevant copy is too small to read."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Compare the critique index with the full inventory, including each individual ad and email variant. Save exact comment/critique text and target IDs. Counts alone do not prove an audience-aware critique."
      ]
    },
    "common-meta-persona": {
      "slots": [
        {
          "id": "persona-targeting",
          "title": "Meta-persona and proposed targeting",
          "target": "Canvas introduction: audience commonalities plus proposed Meta targeting card.",
          "setup": "Show the complete persona and targeting assumptions; expand any hidden text.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "One complete persona capture set, including common problem, self-framing, situations, emotions, desired progress and targeting proposal.",
          "must_see": [
            "Concrete everyday situations explain who the broad adult audience is and what they want to improve.",
            "Problem, self-narrative, feelings and desired progress are distinct and understandable, with hypotheses labelled.",
            "Targeting card clearly states proposed geography, broad/Advantage+ approach, placements and test assumptions; no claim of campaign activation."
          ],
          "reject_if": [
            "Vague segments replace usable commonalities.",
            "Unsupported psychological facts, invented clinical labels or activated-account claims appear."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Record workbook source passages, shared observations and hypotheses separately. Read the dynamic workbook app.js. Proposed targeting must not be described as activated Meta settings."
      ]
    },
    "step-cognitive-logic": {
      "slots": [
        {
          "id": "reasoning-beside-asset",
          "title": "Reader reasoning beside the final step",
          "target": "Canvas analysis card next to the actual ad, landing, email, checkout, lesson, feedback or consultation screen.",
          "setup": "Open final asset and its reasoning card. Show hook/caption/body/CTA in actual reading order.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Every major step on both entry routes and the daily/consultation journey has a linked reasoning capture, not just the persona section.",
          "must_see": [
            "Card distinguishes before-view attitude, attention hook, interpretation order, internal narrative and objection.",
            "It states the desired next thought and explains why the next action offers relevant value with credible delivery and manageable effort.",
            "A concrete criticism and resulting copy/UX improvement match what is visible in the final asset."
          ],
          "reject_if": [
            "Cards merely list USPs or score imagined customer beliefs.",
            "Reasoning is mixed into the customer-facing UI, or the final asset ignores the stated objection."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep pre-generation Markdown drafts, wireframes, criticisms and revisions for every funnel step. Record chronology and final-source mapping. A screenshot cannot prove drafts preceded visual generation or predict the reader’s actual thoughts."
      ]
    },
    "all-stages-connected": {
      "slots": [
        {
          "id": "journey-overview",
          "title": "Both entry routes through consultation",
          "target": "Fitted canvas overview plus readable acquisition and daily-row crops.",
          "setup": "Use Fit, then focus the acquisition branch and the 14-day participant/Rita rows.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Capture full overview, both entry branches and row alignment covering every day-01–day-14.",
          "must_see": [
            "Free-video and direct-challenge routes join the correct paid/access journey.",
            "Upload/feedback, consent, emails, checkout, confirmation/access, all daily screens, final video and consultation appear in logical order.",
            "Exactly 14 expert cards sit below matching participant day IDs, with recognizable labels."
          ],
          "reject_if": [
            "A route jumps directly from ad to a lesson without explaining access.",
            "Days are missing, out of order, or expert and participant IDs do not align."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Click through both acquisition paths and compare actual destinations/day IDs. Retain transition receipts and the complete manifest. Connector arrows alone do not prove the journey works."
      ]
    },
    "canvas-readable": {
      "slots": [
        {
          "id": "canvas-control-states",
          "title": "Readable canvas and full-screen inspection",
          "target": "Canvas at normal reading zoom and an expanded asset view.",
          "setup": "Jump to an asset, open its readable full view, then return to the same canvas position.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Capture controls, focused stage, expanded view and restored position.",
          "must_see": [
            "Pan/zoom/Fit/jump/open controls have understandable labels and the recommended route is obvious.",
            "Full copy is readable in an expanded view without tiny thumbnails being treated as the review surface.",
            "Outer comments and alternative-selection controls do not hide navigation."
          ],
          "reject_if": [
            "The canvas is only a very wide static image.",
            "Reviewer must lose position or navigate away blindly to read an asset."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Exercise pan, zoom, fit, jump, expand, return, keyboard/focus and every index link. Record the same viewport position before/after opening a screen."
      ]
    },
    "actual-canvas-template": {
      "slots": [
        {
          "id": "template-output",
          "title": "Supplied canvas behavior retained",
          "target": "Source CC Klíma canvas and the new customer journey canvas.",
          "setup": "Capture matching control areas and the new focused journey view; use the actual source HTML, not a recreated drawing.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "One source/output comparison plus open-and-return state of the new canvas.",
          "must_see": [
            "New page retains useful spatial navigation, pan/zoom/jump and screen-opening behavior.",
            "The primary structure is a left-to-right journey with expert feedback below participant days.",
            "Branding and content are Komplex, while the reusable canvas navigation remains recognizable."
          ],
          "reject_if": [
            "The output is another vertical report or only a Mermaid diagram.",
            "Decorative canvas controls are visible but not usable."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Save a source-to-output component mapping and actual control behavior receipt from the supplied CC Klíma canvas. Visual resemblance alone does not prove template use."
      ]
    },
    "canvas-review-efficiency": {
      "slots": [
        {
          "id": "review-path-alternatives",
          "title": "Recommended path and A/B comparisons",
          "target": "Canvas introduction/review index and a readable side-by-side variant panel.",
          "setup": "Follow the stated review order; open an ad, both offer alternatives, one email and paired participant/Rita day.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Capture introduction, complete index groups, comparison state and matched day rows.",
          "must_see": [
            "Recommended selections are labelled as recommendations, with alternatives easy to locate.",
            "Every deliverable group, important AI decision, critique and unsent client email has a visible route/link.",
            "Side-by-side alternatives remain readable and the user can return to the journey."
          ],
          "reject_if": [
            "Variants are buried in unlabelled iframe tabs.",
            "Decisions and full copy can only be found by searching the HTML source."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Perform an independent find-one-item-per-deliverable review and compare every manifest item to a reachable index entry. Capture the reviewer’s confusion and corrections, not an unsupported claim of fast review."
      ]
    },
    "twenty-real-square-images": {
      "slots": [
        {
          "id": "all-twenty-ads",
          "title": "All 20 finished square Facebook creatives",
          "target": "Full Facebook preview for each ad-01–ad-20, including actual image and matching copy.",
          "setup": "Open each ad at readable mobile scale; expand long primary text if needed.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "20 individual image/copy captures. Inspect all final image originals for square dimensions and caption spelling.",
          "must_see": [
            "Each image is a genuine rendered 1:1 creative, not a placeholder or stretched crop.",
            "Caption is natural Hungarian, legible and relevant to its image and offer.",
            "Rita’s name is absent from every ad. The primary text makes clear what the click will open."
          ],
          "reject_if": [
            "Unreadable or misspelled image text, unexpected name, duplicated concept, placeholder media or offer mismatch appears."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Verify 20 distinct new GPT-generation receipts, image dimensions and file hashes. Compare exact image text against final copy. A screenshot does not establish model provenance or file uniqueness."
      ]
    },
    "independent-copy-check": {
      "slots": [
        {
          "id": "ad-to-first-screen",
          "title": "Coherent image → copy → destination",
          "target": "Each final Facebook preview plus its destination landing’s first screen.",
          "setup": "Read the image/caption first, then primary text/headline/CTA; open its declared destination.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 20 ad packs and both offer destinations; attach critique record IDs outside the customer preview.",
          "must_see": [
            "Hook locates the reader in a recognizable situation or clear curiosity.",
            "Image caption and primary text form one understandable thought, then explain the offer and next step.",
            "The destination’s first screen answers the expectation created by the ad."
          ],
          "reject_if": [
            "The body is an unexplained USP list.",
            "The headline changes subject, or a free-video ad opens a paid offer without the promised step."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Preserve pre-generation Luna critiques and before/after text for all 20 concepts. Receipts must establish critique before the generated image, not a retrospective rubber stamp."
      ]
    },
    "testable-ad-hypotheses": {
      "slots": [
        {
          "id": "ad-angle-comparison",
          "title": "Materially different ad angles",
          "target": "Canvas ad test guide with the corresponding creative/copy pairs.",
          "setup": "Show representative variants for each angle, alongside what the comparison is intended to teach.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Every ad ID maps to a test angle and destination. Capture the guide and readable comparisons for the distinct angles.",
          "must_see": [
            "Variants differ in a clear situation, hook, benefit emphasis or visual concept, not only a swapped adjective.",
            "Each proposed comparison identifies the audience/offer and a downstream action to observe.",
            "Recommended starting set is distinct from measured results."
          ],
          "reject_if": [
            "Twenty nearly identical ads are presented as twenty tests.",
            "The plan optimizes clicks without considering whether visitors submit or join."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep the test matrix with concept IDs, entry offers, comparison hypotheses and downstream metrics. Do not label simulated or untested variants measured winners."
      ]
    },
    "template-and-brand": {
      "slots": [
        {
          "id": "four-pages-sections",
          "title": "Actual layouts across four mobile landings",
          "target": "free-video-A/B and challenge-A/B: ordered, readable section screenshot sets.",
          "setup": "Use real deployed pages. Scroll so complete headings, copy, media and CTAs of each adapted section are visible.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All four pages, every adapted section, at 390; include 360/430 coverage in landing QA. Mapping must account for all requested S1–S28 layouts.",
          "must_see": [
            "Each section preserves an identifiable supplied layout while serving a distinct offer-related purpose.",
            "Typography, palette, buttons and image treatment align with current Komplex references.",
            "Every section uses finished relevant content, with honest proof and no fake testimonial or arbitrary filler."
          ],
          "reject_if": [
            "Layout quota is met by repeating the same claim.",
            "Irrelevant pricing/features, fake proof, missing media or unrelated template content remain."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep S1–S28 source-to-page mapping for all four pages, design-token references and a claim/source audit. If rationally amended, log original/revised layout coverage and justification. A screenshot cannot prove all layouts or truthful claims by itself."
      ]
    },
    "landing-copy-converts": {
      "slots": [
        {
          "id": "four-heroes",
          "title": "Four understandable first screens",
          "target": "First mobile viewport of free-video-A, free-video-B, challenge-A and challenge-B.",
          "setup": "Open as a first-time visitor, no scrolling. Hide reviewer overlays only, not customer content.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "One first-screen capture per page at 390, plus 360/430 mobile QA.",
          "must_see": [
            "Offer, intended visitor, practical benefit and immediate action are understandable from the first screen.",
            "Free-video route offers a clear first step; challenge route explains the two-week paid practice offer.",
            "Headline, subhead and CTA work together, with no unexplained promise or technical filler."
          ],
          "reject_if": [
            "The screen describes the provider before explaining why the visitor should care.",
            "Ambiguous CTA, mixed offers, obscure headline or unsupported outcome claim appears."
          ],
          "captures": []
        },
        {
          "id": "six-cta-alternatives",
          "title": "Three main CTA sections per offer",
          "target": "Side-by-side comparison of three full CTA-section alternatives for each of two offers.",
          "setup": "Show full section headline, supporting copy, inclusion/friction information and button, then the linked demo state.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Six full CTA alternatives, readable mobile renderings and corresponding destination first screen.",
          "must_see": [
            "Alternatives make materially different, coherent cases for the same next step.",
            "Button label and surrounding copy explain what happens after the click.",
            "Paid CTAs state the proposed offer/amount honestly; free CTAs do not imply payment."
          ],
          "reject_if": [
            "Only button colors change.",
            "CTA contradicts nearby copy or hides the expected checkout/upload action."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read complete copy and sources, then click every principal CTA. Persuasion is a testable hypothesis, not proven conversion. Save material A/B differences and destination receipts."
      ]
    },
    "seven-generated-visuals": {
      "slots": [
        {
          "id": "seven-visual-contexts",
          "title": "Seven landing visuals used in context",
          "target": "Each custom illustration/infographic within its actual landing section.",
          "setup": "Capture media at readable size with the accompanying explanatory heading/copy.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Seven unique visuals; include every placement and inspect each original at readable resolution.",
          "must_see": [
            "Illustration explains the adjacent offer/process instead of adding unrelated decoration.",
            "Infographic labels are legible Hungarian, accurate and consistent with the written process.",
            "Visual is uncropped where its meaning depends on labels; essential instructions remain in readable text."
          ],
          "reject_if": [
            "Fake anatomy, garbled labels, irrelevant imagery or hidden instructions appear."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Verify seven GPT-generation receipts, final file identities/dimensions and deployed placement mapping. Text or anatomy claims need source validation."
      ]
    },
    "brand-section-proof": {
      "slots": [
        {
          "id": "brand-reference-comparison",
          "title": "Komplex identity, not a generic redesign",
          "target": "Current website/commented Figma reference crops beside final hero, programme, feedback, proof and CTA sections.",
          "setup": "Capture references without modifying them and corresponding deployed sections at readable scale.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Reference set plus these key section types across all four variants; six CTA alternatives included.",
          "must_see": [
            "Type hierarchy, palette, button shapes and imagery form the same recognizable visual system.",
            "Rita’s meaningful copy insight is reflected without importing superseded low-feedback promises.",
            "Sections clarify programme, daily feedback, practical concerns and next action with consistent tone."
          ],
          "reject_if": [
            "A polished but unrelated visual identity replaces the website style.",
            "Older contradictory promises survive in one variant."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep website/Figma design references, token mapping and section-purpose notes. Read relevant Rita comments and distinguish superseded workload feedback. Screenshot resemblance does not prove source consultation."
      ]
    },
    "landing-quality-evidence": {
      "slots": [
        {
          "id": "landing-mobile-full-coverage",
          "title": "All landing sections at the required mobile widths",
          "target": "Actual deployed sections of all four landing pages at 360/390/430.",
          "setup": "Capture readable section runs including sticky CTA, long paragraphs, image labels, forms and validation.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All four variants at all three mobile widths. No section may be omitted; a very tall scaled-down screenshot is not readable evidence.",
          "must_see": [
            "Copy, headings and image labels are readable without clipping or a wall of repeated claims.",
            "Controls do not overlap content or force horizontal scrolling.",
            "Every section has a relevant job and every media asset is finished."
          ],
          "reject_if": [
            "A desktop capture is substituted.",
            "Overflow, repeated filler, clipped CTA, illegible image text or missing section remains."
          ],
          "captures": []
        },
        {
          "id": "landing-fix-proof",
          "title": "Material landing defects fixed and rechecked",
          "target": "Same landing section/state before and after a correction, with its actual URL and source/build basis. A defect fixed before first publication retains its honestly labelled local before capture and a fresh deployed after capture. A later defect uses the real deployed before revision.",
          "setup": "Use the same viewport, section and scroll context. Attach final URL/build identifier.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Every significant Luna/content defect gets a comparable before/after pair and fresh independent observation.",
          "must_see": [
            "The exact reported problem is visible in the before image and absent in the after image.",
            "Correction retains coherent offer and design, with surrounding context still readable."
          ],
          "reject_if": [
            "Only an unrelated screenshot or a green status badge is supplied.",
            "After image is stale, local-only or at a different scale that hides the defect."
          ],
          "captures": [],
          "original_target": "Same landing section/state before and after a correction, on actual deployed revision.",
          "additional_capture_basis": "Local before captures are historical evidence, never claimed as deployed. Fresh after captures must be from the actual published revision."
        }
      ],
      "additional_evidence": [
        "Attach independent Luna section findings, correction receipts and fresh postdeployment QA. No missing-console-error or Gemini receipt can substitute for visual/content review."
      ]
    },
    "source-wording": {
      "slots": [
        {
          "id": "source-to-lesson",
          "title": "Original exercise text versus rendered lesson",
          "target": "Source passage and the corresponding expanded daily exercise section.",
          "setup": "Show full exercise instructions, examples/poems and reflection wording. Label source range and proposed day split outside the customer text.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "All original passages mapped across days 01–14. Capture source/render pairs for each module and every differing daily split.",
          "must_see": [
            "Source wording and meaning remain recognizable and complete in the lesson.",
            "Original exercise copy is distinct from new navigation/summary wording.",
            "Six source modules are not falsely labelled fourteen originally approved lessons."
          ],
          "reject_if": [
            "A summary replaces a full exercise or poem.",
            "New interface wording quietly changes repetitions, steps or meaning."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Use exact source-to-day mappings and a normalized text comparison, ignoring extraction whitespace only. Account for six original modules and all fourteen proposed day splits. Do not silently rewrite exercises."
      ]
    },
    "fifty-six-daily-images": {
      "slots": [
        {
          "id": "four-options-per-day",
          "title": "Four real visual choices for every day",
          "target": "Daily image chooser/gallery with all four alternatives.",
          "setup": "Open chooser for each day; expand both infographics to read their actual labels.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "14 chooser capture sets, each showing two infographics and two AI images; all 28 infographics inspected at readable full resolution.",
          "must_see": [
            "Four actual images are present, distinctly labelled by type/alternative.",
            "Recommended selection is clear and changing it shows the chosen image in the lesson.",
            "Visuals relate to the day’s task and infographic wording agrees with the original instruction."
          ],
          "reject_if": [
            "A placeholder, duplicate file pretending to be another generation, garbled text or unrelated visual is counted."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Verify 56 genuine generated files and receipts: day01–14 × infographicA/B and imageA/B. Record unique file hashes, dimensions, type, source purpose and actual chooser mapping."
      ]
    },
    "usable-mobile-tasks": {
      "slots": [
        {
          "id": "day-task-flow",
          "title": "Readable daily task → reflection → demo submission",
          "target": "Participant entry/overview and each day’s practice, reflection and video sections.",
          "setup": "Enter demo mode, open a day, complete meaningful reflection and select/play fixture video, then demo-submit.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 14 day views plus entry/overview; capture practice, filled form and submitted status. Include planned previous-feedback checkpoints.",
          "must_see": [
            "The participant can tell what to do, record and submit, and what Rita will do next.",
            "Source journal prompts are real controls with visible chosen values/text and save status.",
            "Local demonstration labels make clear that a real server upload has not occurred."
          ],
          "reject_if": [
            "Lesson is only a static document.",
            "Controls lack meanings, a video thumbnail is fake playback, or demo success claims a real upload."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Record interaction receipts for entry, each day’s reflection/save/reload, local media preview, submission and feedback readback. A static screenshot cannot establish playable video or persistence."
      ]
    },
    "day-inventory": {
      "slots": [
        {
          "id": "overview-and-day-headers",
          "title": "All fourteen days are accessible",
          "target": "Course overview and first viewport of each individual day.",
          "setup": "Enter demo; open every overview tile and each direct day URL without waiting a real day.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "One readable overview set plus 14 day-header captures. Capture enough overview sections to read every tile.",
          "must_see": [
            "Days 01–14 have distinct stable IDs/titles and correctly ordered progress/status.",
            "Each day header identifies the task, source range/context and useful next action.",
            "Selected/pending/completed/feedback states are distinguishable."
          ],
          "reject_if": [
            "Duplicate IDs, missing tiles, misleading locked days, wrong source ranges or a dead-end screen appears."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Check day01–14 direct routes, IDs, titles and source ranges in the manifest, overview and running app. Actually open every link."
      ]
    },
    "lesson-completeness": {
      "slots": [
        {
          "id": "complete-daily-content",
          "title": "Complete lesson, not a compressed summary",
          "target": "All sections of each daily lesson with expandable exercise text opened.",
          "setup": "Expand core instructions and any source text/download previews. Capture sections sequentially at readable scale.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 14 daily content sets and all original module passages. Capture the entire relevant poem/example/instruction, not only its heading.",
          "must_see": [
            "Reason for practice, ordered full instructions, examples, supplied repetitions/duration and original reflection prompts are present.",
            "Core exercises and optional extras are clearly separated.",
            "Recording instruction and next step complete the lesson; unavailable original media is honestly marked."
          ],
          "reject_if": [
            "Important material is hidden behind an empty download or AI summary.",
            "Poem, repetition instruction or reflection fields disappear."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Compare all meaningful source passages, rationale, examples/poems, repetition guidance, reflection and downloads to the full rendered text. Keep intentional splitting/missing-media records. Image captures alone cannot establish source completeness."
      ]
    },
    "daily-ux-order": {
      "slots": [
        {
          "id": "daily-sequence",
          "title": "Day header and meaningful task order",
          "target": "Daily first screen followed by contiguous task/feedback/practice/form/submission sections.",
          "setup": "Open each day as a returning participant. On checkpoints open yesterday’s feedback before current practice.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 14 day first screens and ordered section captures; special checkpoint sequence on days 2,5,8,12 unless a logged source-based alternative replaces it.",
          "must_see": [
            "Day/progress, plain task summary and first useful action are immediately clear.",
            "Order is previous review where scheduled, practice reason, ordered exercises, reflection, recording/submission and next expectation.",
            "Steps are scannable without controls competing with the instructions."
          ],
          "reject_if": [
            "The participant must search for what to do first.",
            "Recording appears before they understand the task or feedback interrupts unrelated content."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Independent reviewer must state first action, practice/recording task, completion method and feedback timing from each day. Save actual confusion/revision observations, not guessed participant thoughts."
      ]
    },
    "reflection-state": {
      "slots": [
        {
          "id": "reflection-unanswered-filled",
          "title": "Unanswered versus meaningful filled answers",
          "target": "Each day’s Napló & önértékelés form.",
          "setup": "Capture unanswered state, then change labelled sliders and enter a day-specific reflection.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "14 day form sets: unanswered, edited/unsaved, saved and reloaded readback. Include a demonstrated failed-save state.",
          "must_see": [
            "Original prompts and scale labels/endpoints are readable.",
            "Unanswered is different from a real zero or middle score; changed values and reflection text are visible.",
            "Saved/unsaved/error status is clear and the reloaded form belongs to the same day."
          ],
          "reject_if": [
            "Default sliders are silently treated as real answers.",
            "A save badge appears while displayed values reset or belong to another day."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "For EACH day enter a distinct text and non-default scores, save, navigate away and reload. Compare exact values/day IDs. Test unanswered, edited/unsaved and simulated failed-save states without a backend."
      ]
    },
    "video-ux-states": {
      "slots": [
        {
          "id": "video-selection-validation",
          "title": "No file, valid preview, replace/remove and validation",
          "target": "Daily recording/video submission area.",
          "setup": "Try submission with no file and an unsupported file; then select playable fixture video, play, replace and remove it.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Every day supports these states; capture readable state sets across all 14 IDs. Include actual error and valid-preview captures.",
          "must_see": [
            "Recording guidance, chosen file/day, real video controls, replace/remove and submit actions are visible.",
            "No-file/unsupported-file error is understandable and does not show successful submission.",
            "Removal restores a clear empty state. Preview shows the intended video rather than an unrelated thumbnail."
          ],
          "reject_if": [
            "Unsupported media appears submitted, preview is broken, or replace/remove leaves stale filename/status."
          ],
          "captures": []
        },
        {
          "id": "demo-submit-reload",
          "title": "Honest submission and reload state",
          "target": "Daily submitted/waiting feedback screen and reloaded video state.",
          "setup": "Select valid video and deliberately demo-submit; reload the same day.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Submitted/waiting and reload readback for day01–14.",
          "must_see": [
            "Success explicitly identifies a prototype/local demonstration and explains daily Rita review.",
            "Correct day/file metadata remains consistent. If bytes were not retained, reselection is requested and no broken player is shown.",
            "Waiting for feedback is different from feedback already received."
          ],
          "reject_if": [
            "The UI claims an actual server upload or real Rita review.",
            "A stale saved filename is rendered as a playable uploaded video after bytes are gone."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Actually select valid/unsupported/no media, play the preview, replace/remove and demo-submit on every day. Record file/day/status readback and honest reload behavior. Screenshots cannot prove playback or absence of server transfer."
      ]
    },
    "participant-feedback-loop": {
      "slots": [
        {
          "id": "participant-feedback-states",
          "title": "Waiting, available and reviewed feedback",
          "target": "Same participant/day before submission, waiting, feedback available and read.",
          "setup": "Use one demo fixture, deliberately send feedback from the matching Rita view and return to participant.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 14 day feedback states; clearly appropriate Day1 start. Focus readable checkpoint sequences on days2,5,8,12.",
          "must_see": [
            "Not submitted, waiting, feedback available and reviewed are distinct states.",
            "Yesterday’s video/day ID and specific sample feedback match the previous task.",
            "Next practice focus links to the current source exercise, with sample content labelled."
          ],
          "reject_if": [
            "Feedback arrives before any submission without being identified as sample/demo.",
            "Previous-day title/video/message belongs to a different day or gives generic unrelated advice."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Run browser-local participant submission → Rita draft/send → matching participant readback. Record IDs, exact sent message and state transitions. Do not claim real messaging."
      ]
    },
    "daily-visual-relevance": {
      "slots": [
        {
          "id": "daily-visual-detail",
          "title": "Readable infographic and image purpose",
          "target": "Day-specific chooser plus expanded infographic and selected in-lesson visual.",
          "setup": "Show source task heading nearby; expand image when labels would otherwise be too small.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All 14 days × four alternatives. Inspect every infographic at text-readable scale, plus every selected mobile placement.",
          "must_see": [
            "Infographic labels support the day’s exact exercise, with correct Hungarian and readable layout.",
            "AI image has a clear task-related purpose, no fabricated anatomical assertion.",
            "Essential exercise wording remains textual and does not depend on reading tiny image captions."
          ],
          "reject_if": [
            "Gibberish text, unsupported exercise step, cropped label or irrelevant stock-like scene remains."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read every infographic against its source task, inspect all 56 original files and final mobile renderings. Verify each chosen image actually changes. Overlap between alternatives is allowed; false anatomy or changed instructions are not."
      ]
    },
    "mobile-app-quality": {
      "slots": [
        {
          "id": "participant-mobile-coverage",
          "title": "Participant screens at three mobile widths",
          "target": "Demo entry, overview and all14 participant days: header, long instruction, form, media and primary actions.",
          "setup": "Use actual deployment; capture each section/state at requested mobile widths, including long Hungarian content.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Entry/overview and day01–14 at 360×844, 390×844 and 430×844 CSS px. Cover every section and significant state at readable scale.",
          "must_see": [
            "No horizontal scrolling, overlap, clipped text or sticky control hiding the current task.",
            "Labels and touch controls are usable and readable, including long reflection/video states.",
            "Day context/navigation remain obvious throughout the screen."
          ],
          "reject_if": [
            "Desktop-only screenshot substitutes for mobile proof.",
            "A pretty first screen hides broken lower sections or obscured submit controls."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep actual 360/390/430 coverage inventory, interaction checks, broken-asset/console results and Luna fix/recheck receipts. No larger customer-screen QA."
      ]
    },
    "day14-to-consultation": {
      "slots": [
        {
          "id": "final-day-consultation",
          "title": "Final practice → useful consultation",
          "target": "Day14 final task/reflection/video and consultation preparation/confirmation.",
          "setup": "Finish the final demo task, then follow the actual next-action control to preparation and sample booking.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Capture each transition and both participant and Rita consultation contexts.",
          "must_see": [
            "Original final practice/reflection remains intact.",
            "The next step states what to prepare, what the online consultation discusses and what follows.",
            "Booking is visibly sample/demo; the programme is a practical start, not a guaranteed cure or completed development."
          ],
          "reject_if": [
            "Day14 ends without a clear next action.",
            "The call contradicts the paid offer or displays invented real availability."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Click final-day reflection/video → preparation → sample slot → confirmation. Compare source and promise matrix. Never infer therapeutic completion or real booking from a prototype."
      ]
    },
    "expert-feedback-loop": {
      "slots": [
        {
          "id": "paired-student-rita",
          "title": "Matched participant ↔ Rita ↔ participant states",
          "target": "Aligned canvas row plus readable participant submission, Rita editor/sent and participant received view.",
          "setup": "Use the same sample participant/day and send a distinctive feedback message.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All14 matched day IDs; each has full context screenshots and feedback readback.",
          "must_see": [
            "Expert screen sits below the matching participant day in the canvas.",
            "Submission day, participant, video and feedback editor/sent states refer to the same task.",
            "Participant readback displays the actual demo message entered in that Rita view."
          ],
          "reject_if": [
            "Rows align visually but IDs/text differ.",
            "Sending in one day changes another day’s feedback or displays a prewritten unrelated message."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "For all14 IDs exercise the complete browser-local submission/edit/send/readback. Match participant, task, video and exact feedback text. No server, email or messaging proof is required."
      ]
    },
    "clear-feedback-copy": {
      "slots": [
        {
          "id": "feedback-full-text",
          "title": "Natural task-specific personal feedback",
          "target": "Rita feedback preview and matching participant feedback panel.",
          "setup": "Expand full sample text and show day/task context.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All14 full sample messages, not a cropped preview or one reused paragraph.",
          "must_see": [
            "Each message gives a concrete observation and an actionable next practice focus.",
            "It uses supportive natural Hungarian and is clearly sample content.",
            "Daily personal feedback is the pilot model without unsupported diagnosis or fabricated personal improvement."
          ],
          "reject_if": [
            "Generic encouragement replaces an observation/action.",
            "Feedback claims an unseen result or diagnostic certainty."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read all14 demo feedback texts against the original exercises and daily-feedback pilot proposal. Independent copy reviewer must flag unsupported results/diagnoses."
      ]
    },
    "rita-review-context": {
      "slots": [
        {
          "id": "expert-context-switch",
          "title": "Unambiguous review context after switching",
          "target": "Rita queue/review header, task context, video and reflection.",
          "setup": "Capture before/after switching between distinct days and sample participants.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Every14 day IDs; include one deliberate day/participant switch comparison.",
          "must_see": [
            "Sample participant, day, task/source, submission time/status and video identity are clear.",
            "Video, reflection and feedback context change together with the selected day.",
            "Demo data is labelled, with no claim of a real client upload."
          ],
          "reject_if": [
            "Old title, reflection, video or feedback remains after the selected day changes.",
            "Rita cannot tell whose submission is being reviewed."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Switch day/participant intentionally and compare all dependent content with fixture/source records across day01–14. A screenshot alone cannot prove stale-state prevention."
      ]
    },
    "rita-write-send-flow": {
      "slots": [
        {
          "id": "rita-editor-states",
          "title": "Review, draft, preview and deliberate demo send",
          "target": "Rita video/reflect/editor panel, empty-validation, saved-draft and send-confirmation states.",
          "setup": "Read reflection, enter a distinctive message, save/reload/edit, preview, then mark sent. Attempt empty feedback separately.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All14 day workflows. Include visible empty-error, restored-draft, preview, recipient/day confirmation and participant readback.",
          "must_see": [
            "Player controls, source task/reflection and editor are readable together or through clear navigation.",
            "Draft status and full message are visible; empty feedback cannot appear sent.",
            "Preview/confirmation states identify recipient/day and mark delivery as a prototype action."
          ],
          "reject_if": [
            "Send fires unintentionally, empty feedback passes, or confirmation hides recipient/day.",
            "Restored draft is silently replaced or appears on a different day."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Play/pause/replay real fixture media; save/edit/reload a distinct draft; reject empty feedback; preview/send and compare exact student readback for all14IDs. Frontend only."
      ]
    },
    "rita-feedback-content": {
      "slots": [
        {
          "id": "fourteen-feedback-examples",
          "title": "Fourteen specific, source-grounded feedback examples",
          "target": "Full daily sample feedback with the matching original exercise context.",
          "setup": "Open each sample in the review preview. Do not crop the closing action or its qualifiers.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "One readable full-text/context capture per day01–14.",
          "must_see": [
            "Observation, supportive explanation and next focus are identifiable and relevant to this day.",
            "The fourteen messages are meaningfully differentiated, natural Hungarian and explicitly sample text.",
            "The next action respects the actual exercise instead of adding a new unsupported technique."
          ],
          "reject_if": [
            "The same generic message is repeated fourteen times.",
            "Invented diagnoses, personal results or contradictory technique appears."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Independent review reads all14 full texts, identifies observation/explanation/next action, checks source fit and logs material before/after copy corrections."
      ]
    },
    "rita-mobile-qa": {
      "slots": [
        {
          "id": "expert-mobile-coverage",
          "title": "Rita mobile queue, player and long editor",
          "target": "All14 expert day views in waiting/unread/draft/sent states.",
          "setup": "Use actual deployed expert prototype and enter a long Hungarian message; inspect task/video/reflection and primary action.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All14 expert views at 360×844,390×844,430×844. Capture long editor, validation and status states, not only the header.",
          "must_see": [
            "Komplex UI system is consistent and queue/status labels are clear.",
            "Long text fields and controls remain readable without overflow or hidden task context.",
            "Primary action is reachable and does not cover the player/editor or confuse save with send."
          ],
          "reject_if": [
            "Desktop QA replaces mobile views.",
            "Sticky action obscures content, long feedback clips, or status meanings are unclear."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Actual 360/390/430 screenshots, independent Luna findings, fixes and fresh deployed recheck across all expert views. Interaction evidence remains separate."
      ]
    },
    "checkout-handoff": {
      "slots": [
        {
          "id": "checkout-all-branches",
          "title": "Truthful frontend payment journey",
          "target": "Paid landing CTA, Stripe-like checkout, success/access, cancel, pending/error and sold-out/waitlist.",
          "setup": "Choose the review offer; navigate each demo state using explicit prototype controls.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All four landing variant destinations as applicable, and every listed checkout branch.",
          "must_see": [
            "Challenge, proposed one-time amount, inclusions and next step agree between landing and checkout.",
            "Success opens confirmation/access; cancellation returns to the right offer; pending/error explains sensible retry; sold-out offers a demo waitlist.",
            "Prototype/simulated labels are clear and do not imply actual payment or enrollment."
          ],
          "reject_if": [
            "Checkout changes price/product or celebrates a real charge.",
            "Error/cancel/waitlist screens are disconnected or unclear."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Click deployed checkout branch controls and verify consistent programme/amount/destination. Keep frontend-only fixture/network receipts; never create real Stripe sessions or charges."
      ]
    },
    "email-and-delivery-continuity": {
      "slots": [
        {
          "id": "email-journey-sequence",
          "title": "Service, opt-in newsletter and cohort sequences",
          "target": "Canvas email sequence with readable A/B service/nurture/newsletter/promotion previews and consent/suppression cards.",
          "setup": "Open complete email bodies, including footer/CTA; inspect subscribed versus not-subscribed and purchased fixture states.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Every email/variant in full inventory and all sequence rules, including weekly newsletter and fixed-cohort campaign.",
          "must_see": [
            "Emails are in the correct recipient/trigger order with complete natural copy and matching links.",
            "Required service messages are distinct from optional marketing consent.",
            "Promotion replaces the weekly newsletter during cohort campaign and paid participants are shown excluded from sales reminders."
          ],
          "reject_if": [
            "Uploading a video silently forces marketing subscription.",
            "A person depicted as paid keeps receiving purchase reminders or duplicate weekly/promotional messages."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read full A/B copy/trigger/recipient/destination inventory and exercise consent/suppression demo fixtures. Ensure campaign replaces rather than duplicates weekly mail and purchasers leave sales reminders. No actual send."
      ]
    },
    "consultation-completes-journey": {
      "slots": [
        {
          "id": "consultation-purpose",
          "title": "Clear purpose and next step after the challenge",
          "target": "Final-day next-action and consultation participant/Rita views.",
          "setup": "Open final practice and follow the consultation preparation link.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Capture full preparation and participant/Rita consultation context.",
          "must_see": [
            "The visitor can state when the call happens, what to prepare, what is reviewed and what follows.",
            "Sample booking and confirmation are honest; the call reviews practice and useful next steps.",
            "No guaranteed cure, completed development or real slot claim is made."
          ],
          "reject_if": [
            "Consultation is a vague final button without purpose/preparation.",
            "Participant and Rita expect different timing or deliverables."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Walk final-day → consultation on both routes, read participant/Rita views and compare original timing/inclusions. A screenshot cannot prove real booking or therapy completion."
      ]
    },
    "checkout-demo-continuity": {
      "slots": [
        {
          "id": "paid-cta-to-access",
          "title": "Connected checkout, not isolated mockups",
          "target": "Each paid landing CTA → correct checkout → confirmation/access/overview; cancel/error/waitlist branches.",
          "setup": "Click real controls; retain selected offer/version. After cancellation return to the same offer.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Both challenge variants and all critical CTA alternatives; every branch and subsequent access screen.",
          "must_see": [
            "Selected challenge/amount/inclusions stay consistent and the next screen follows from the button label.",
            "Success offers clear access/overview, retry retains context, cancellation restores offer, sold-out leads to demo waitlist.",
            "Customer is not stranded on a static screenshot with no useful next action."
          ],
          "reject_if": [
            "A/B variant links open the wrong checkout or price.",
            "Success does not lead to access or a branch loses context."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Exercise every actual main CTA and success/cancel/pending/error/waitlist branch. Record offer/version/price and exact destinations. Confirm no live payment/enrollment/waitlist calls."
      ]
    },
    "email-preview-context": {
      "slots": [
        {
          "id": "full-email-ab",
          "title": "Full email with trigger and matching next screen",
          "target": "Mobile email preview showing subject/preheader/body/CTA; A/B comparison and destination.",
          "setup": "Expand full body; open the linked frontend state. Place analysis labels outside the customer email.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All emails and substantive A/B alternatives, including newsletter and cohort sales.",
          "must_see": [
            "Trigger and recipient stage are clear in review metadata. Full body, subject, preheader and CTA are readable.",
            "Hook builds a natural relevant thought before the offer, not an arbitrary feature list.",
            "Feedback follow-up does not pretend an unsubmitted video was reviewed; CTA opens the promised step."
          ],
          "reject_if": [
            "Placeholder link, unexplained hook, missing subject/body, or sales reminder to a paid fixture survives."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read every full email A/B pair against source and journey state, then click every preview CTA. Verify free-video follow-up occurs after feedback and no actual send is performed."
      ]
    },
    "consultation-ui-completeness": {
      "slots": [
        {
          "id": "consultation-frontend-states",
          "title": "Preparation, sample booking and after-call states",
          "target": "Consultation UI: preparation, slot choice, confirmation, link state, rescheduling/cancel and next-step.",
          "setup": "Choose a sample slot; confirm, reschedule and cancel in demo. Open post-consultation view separately.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "Every consultation state, plus source-consistent explanation of early reservation versus post-challenge call.",
          "must_see": [
            "Purpose, required preparation, sample date/time and confirmation next step are understandable.",
            "Meeting-link state honestly says demo/unconfirmed and does not invent a real Meet destination.",
            "Reschedule/cancel has a clear result; after-call screen describes next options rather than claiming a fabricated outcome."
          ],
          "reject_if": [
            "Invented real availability/link, contradictory date order or dead-end booking state appears."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Click preparation, sample slot, confirmation, meeting-link state, reschedule/cancel and post-call views. Compare booking timing to sources. No backend calendar or real meeting URL required."
      ]
    },
    "funnel-promise-consistency": {
      "slots": [
        {
          "id": "promise-comparison",
          "title": "Same service across the whole journey",
          "target": "Readable relevant excerpts from ad, landing, checkout, email, daily lesson, expert feedback and consultation beside promise matrix.",
          "setup": "Show inclusions and expectation-setting passages in the actual deployed assets, not a newly written summary only.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Every asset variant mapped; include daily tasks/video/daily feedback/final consultation and date/price/limit claims.",
          "must_see": [
            "All stages offer the same fourteen-day practice with daily submissions/personal feedback and sourced final consultation.",
            "Proposed price/capacity and unconfirmed dates remain consistently labelled, with no fabricated countdown or urgency.",
            "Two-week practical progress is distinct from longer-term development."
          ],
          "reject_if": [
            "One page reuses old no-feedback promises, another promises a cure, or CTA destinations change the offer."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep cross-asset promise/destination matrix and independent full-copy review. Screenshots cannot prove every claim/source or conversions. Fix all contradictory inclusions, guarantees, fake urgency and mismatched links."
      ]
    },
    "complete-review-index": {
      "slots": [
        {
          "id": "morning-index",
          "title": "Complete morning review index and recommendations",
          "target": "Canvas introduction, recommended path, full categorized index and variant comparison links.",
          "setup": "Expand every index group and recommendation/decision panel.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Cover all nine deliverable groups and every manifest asset/alternative with readable index entries.",
          "must_see": [
            "Recommended path is easy to find with substantive alternatives one click away.",
            "Day01–14 and matching expert views, all20 ads, all4 landings, email variants, critique, decisions and client email are represented.",
            "Recommendations are not labelled measured winners or Rita-approved assets."
          ],
          "reject_if": [
            "The reviewer must infer filenames or URLs.",
            "An image/variant/day/email group is absent or recommendations are falsely presented as proven results."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Compare complete manifest to every index/canvas link, including all variants/images/days/emails. Verify hosted links. Screenshot of the index alone cannot prove completeness or HTTP success."
      ]
    },
    "rita-draft-specific": {
      "slots": [
        {
          "id": "client-email-draft",
          "title": "Unsent Rita email with precise review instructions",
          "target": "Final Hungarian email draft on the review surface.",
          "setup": "Show subject and complete body, including all URL descriptions and review questions.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Capture the entire email at readable scale; follow and independently verify every included URL.",
          "must_see": [
            "Email tells Rita what each URL contains, what to review and the guiding principles.",
            "It describes the actual delivered frontend review/proposals honestly and explains consequential decisions needing approval.",
            "Draft/unsent status is explicit in review metadata, with no claim of sending or client approval."
          ],
          "reject_if": [
            "Generic email lists unnamed links, claims unfinished assets are finished, or makes unapproved binding promises."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Read the UNSENT client email against actual finished assets and verified URLs. Follow every link and ensure unfinished/approval-needed items remain honest. No send is authorized."
      ]
    },
    "independent-mobile-qa": {
      "slots": [
        {
          "id": "blind-luna-coverage",
          "title": "Independent observations and complete capture index",
          "target": "QA evidence index linking actual mobile screenshots and blind Luna reports.",
          "setup": "Show asset/section/state/viewport, deployed build and review/fix/recheck references. Open readable samples.",
          "viewport": "Internal review canvas/document: 1280×900 CSS px, DPR 1. Open customer screens separately at mobile widths. A canvas thumbnail does not replace a readable mobile screenshot.",
          "coverage": "Every changed customer page/section and significant state at 360/390/430, split into at least two independent QA partitions.",
          "must_see": [
            "Each evidence item identifies the exact deployed asset, state and viewport, with actual screenshot and independent observations.",
            "Original defect, corrective action and fresh recheck are linked without hiding outstanding issues.",
            "Only mobile customer captures are counted. Review canvas screenshots remain a separate document category."
          ],
          "reject_if": [
            "A green count has no readable underlying evidence.",
            "Reports repeat expected rubric as if observed or use local/stale/desktop customer captures."
          ],
          "captures": []
        },
        {
          "id": "fresh-fix-pair",
          "title": "Same defect before and after on the deployment",
          "target": "Readable before/after mobile section screenshots for every material defect.",
          "setup": "Capture corrected section/state at same viewport on the final deployed build; get fresh independent observations.",
          "viewport": "Customer screen at 390×844 CSS px, DPR 1 for readable content. Add 360×844 and 430×844 for the stated mobile QA coverage. Never capture a desktop customer UI.",
          "coverage": "All significant visual/content/UX defects from both partitions, with matching before/after contexts.",
          "must_see": [
            "The specific defect is visible before and resolved after, at the same readable scale.",
            "Nearby content remains usable and the final capture genuinely belongs to the deployed revision."
          ],
          "reject_if": [
            "The evidence only asserts fixed or changes viewport/crop to conceal the issue."
          ],
          "captures": []
        }
      ],
      "additional_evidence": [
        "Keep at least two independent Luna xhigh partition launch/report receipts, Luna max fixes, coverage inventory and fresh deployed re-QA. Report actual findings; no screenshot-only greenwashing."
      ]
    }
  }
}