{
  "schema": "adfactory.narrative-contract/v2",
  "source": {
    "media": {
      "path": "analysis/source-proxy.mp4",
      "sha256": "7d8e82efab4b261a65f615f887488b198869475f993ff25d29cbaff7c6419fbf"
    },
    "duration_s": 325.681678,
    "annotations": {
      "path": "analysis/source-annotations.json",
      "sha256": "084d9ef0dfb7c7db5c34616314e9c80f8c1018077e19d03692e9f6242cd58eb4"
    },
    "new_audit": "analysis/evidence/09-meta-function-native/analysis.md"
  },
  "meta_function": {
    "id": "restore-possibility",
    "signature": "RESTORE_POSSIBILITY(AUDIENCE, PROBLEM, STAKES, ACTOR, WITNESS, TRIGGER, FAILED_MODEL, HELPER, REFRAME, PRODUCT, RITUAL, PROOF, PAYOFF, OFFER, REGION, LANGUAGE, CLOCK) → an earned belief transition and actionable close",
    "mechanism": "Visible friction creates a question; active discovery earns a reframe; inspectable use and progression establish the declared result; a callback restores possibility; an exact offer makes action possible.",
    "preconditions": [
      "A relevant friction or desire can be depicted.",
      "A product-specific observable can support the proof or an explicitly illustrative demo.",
      "The actual buying step and terms are known."
    ],
    "refuse_when": [
      "No honest connection between product and proposed outcome.",
      "Proof would require inventing a testimonial, credential or measurement.",
      "A required slot cannot be filled; choose a different adapter."
    ],
    "slots": [
      {
        "id": "AUDIENCE",
        "constraint": "Specific person with a relevant need; no invented demographic certainty."
      },
      {
        "id": "PROBLEM",
        "constraint": "One observable friction, separate from shame or identity."
      },
      {
        "id": "STAKES",
        "constraint": "What this friction prevents the audience from doing or enjoying."
      },
      {
        "id": "ACTOR",
        "constraint": "Person who chooses the action; can also narrate or witness."
      },
      {
        "id": "WITNESS",
        "constraint": "Observer or measurement process; may be the actor, not necessarily family."
      },
      {
        "id": "TRIGGER",
        "constraint": "Concrete incident that makes the friction matter now."
      },
      {
        "id": "FAILED_MODEL",
        "constraint": "Prior assumption or approach, described without invented competitor harm."
      },
      {
        "id": "HELPER",
        "constraint": "Credible access to information; peer, demo, support or documentation, no fake authority."
      },
      {
        "id": "REFRAME",
        "constraint": "Simple accurate alternative explanation, tied to product evidence."
      },
      {
        "id": "PRODUCT",
        "constraint": "Exact product/service and verified package or interface."
      },
      {
        "id": "RITUAL",
        "constraint": "Observable, manageable use consistent with directions."
      },
      {
        "id": "PROOF",
        "constraint": "Baseline, use, elapsed checks and endpoint on a comparable observable; evidence type disclosed."
      },
      {
        "id": "PAYOFF",
        "constraint": "Restage the opening friction and show restored possibility."
      },
      {
        "id": "OFFER",
        "constraint": "Current next action, destination and terms; no borrowed scarcity."
      },
      {
        "id": "REGION",
        "constraint": "Recognizable present-day local life and plausible material, social and architectural detail; visual appeal comes from motivated light, composition and contrast, not compulsory saturation or gloom."
      },
      {
        "id": "LANGUAGE",
        "constraint": "Native idiom, spoken pronunciation and matching captions."
      },
      {
        "id": "CLOCK",
        "constraint": "Accepted audio and domain-appropriate story time, never a compulsory four-week runtime."
      }
    ],
    "invariants": [
      {
        "id": "I01",
        "name": "Consequence precedes explanation",
        "rule": "An observable friction gains stakes before product detail.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 0,
          "end_s": 28,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I02",
        "name": "A question motivates active discovery",
        "rule": "A needed answer carries the viewer into the explanation.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 28,
          "end_s": 77,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I03",
        "name": "Reframe earns product relevance",
        "rule": "The product answers a question instead of interrupting it.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 77,
          "end_s": 140,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I04",
        "name": "Objection becomes a test",
        "rule": "The buyer can question and choose; doubt is not skipped.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 160,
          "end_s": 241,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I05",
        "name": "Use precedes outcome",
        "rule": "Use and elapsed checks connect action to the claimed result.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 220,
          "end_s": 284,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I06",
        "name": "Payoff repays the opening debt",
        "rule": "Return to the original friction with a changed observable.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 266,
          "end_s": 300,
          "status": "interpreted",
          "confidence": "medium"
        }
      },
      {
        "id": "I07",
        "name": "Action follows demonstrated possibility",
        "rule": "The local next step follows the same motivation.",
        "evidence": {
          "path": "analysis/source-annotations.json",
          "start_s": 300,
          "end_s": 325.681678,
          "status": "interpreted",
          "confidence": "medium"
        }
      }
    ],
    "stages": [
      {
        "id": "disrupt",
        "source_start_s": 0,
        "source_end_s": 28,
        "source_fraction": 0.085974,
        "exit": "The viewer can name a consequential friction.",
        "question": "Why does this matter?"
      },
      {
        "id": "commit",
        "source_start_s": 28,
        "source_end_s": 55,
        "source_fraction": 0.082903,
        "exit": "An actor commits to finding an answer.",
        "question": "Where can an answer come from?"
      },
      {
        "id": "earn-access",
        "source_start_s": 55,
        "source_end_s": 77,
        "source_fraction": 0.067551,
        "exit": "Information access is credible and relevant.",
        "question": "Can I trust this explanation?"
      },
      {
        "id": "reframe",
        "source_start_s": 77,
        "source_end_s": 110,
        "source_fraction": 0.101326,
        "exit": "The alternative model is understandable.",
        "question": "What would work differently?"
      },
      {
        "id": "reveal-challenge",
        "source_start_s": 110,
        "source_end_s": 220,
        "source_fraction": 0.337753,
        "exit": "The product and the strongest objection are inspectable.",
        "question": "Why this product for this problem?"
      },
      {
        "id": "try",
        "source_start_s": 220,
        "source_end_s": 241,
        "source_fraction": 0.06448,
        "exit": "The actor chooses and visibly performs use.",
        "question": "What happens after using it?"
      },
      {
        "id": "progress",
        "source_start_s": 241,
        "source_end_s": 284,
        "source_fraction": 0.132031,
        "exit": "Comparable intermediate and final states are visible.",
        "question": "Has the opening problem changed?"
      },
      {
        "id": "payoff",
        "source_start_s": 284,
        "source_end_s": 300,
        "source_fraction": 0.049128,
        "exit": "The opening situation is restaged with a resolved obstacle.",
        "question": "What can happen now?"
      },
      {
        "id": "act",
        "source_start_s": 300,
        "source_end_s": 325.681678,
        "source_fraction": 0.078855,
        "exit": "The viewer knows one exact buying step.",
        "question": "How do I act?"
      }
    ],
    "swap_tests": [
      {
        "id": "cream",
        "category": "cosmetic",
        "slots": {
          "AUDIENCE": "Ukrainian woman whose dry-looking neck bothers her in photos",
          "PROBLEM": "Dry/crepey neck and conspicuous bands",
          "STAKES": "Comfort and participating in photographs",
          "ACTOR": "Oksana chooses her own care after daughter listens",
          "WITNESS": "Adult daughter notices; matched illustrative state views",
          "TRIGGER": "Oksana asks daughter to crop her from an otherwise happy photograph",
          "FAILED_MODEL": "Ignoring neck care while expecting a face routine to cover it",
          "HELPER": "Larysa asks what is convenient for Oksana, then shares a practical care routine",
          "REFRAME": "Consistent neck care with a product described for hydration",
          "PRODUCT": "Exact goPure purple jar and silver cap",
          "RITUAL": "Apply per seller directions; first use does not erase concern",
          "PROOF": "Illustrative weeks 1→2→3→4: declared markers fade to absent; not clinical/customer evidence",
          "PAYOFF": "Oksana asks to KEEP the new family photograph with herself at its center",
          "OFFER": "Inspect ingredients, use and current seller terms through the product link",
          "REGION": "Contemporary lived-in Lviv apartment and courtyard, attractive daylight, oak, sage tile, blue ceramics; no forced melancholy or decorative stereotype",
          "LANGUAGE": "Ukrainian narration, accent-marked provider input, plain captions",
          "CLOCK": "Accepted spoken master; four elapsed weeks in story"
        },
        "verdict": "structurally-complete; commercial truth needs product-specific evidence"
      },
      {
        "id": "bookkeeping",
        "category": "business-service",
        "slots": {
          "AUDIENCE": "Small-business owner losing evenings to reconciliation",
          "PROBLEM": "Unmatched/duplicate entries in a ledger",
          "STAKES": "An evening with family and a reliable close",
          "ACTOR": "Owner chooses a bookkeeping service",
          "WITNESS": "Owner plus sandbox reconciliation report",
          "TRIGGER": "Another late-night close fails",
          "FAILED_MODEL": "More manual spreadsheet copying will make it faster",
          "HELPER": "Accountant demonstrates in a sandbox",
          "REFRAME": "A single reconciled record removes repeated copying",
          "PRODUCT": "Bookkeeping service with authorized demo interface",
          "RITUAL": "Import sample ledger, review matches, approve reconciliation",
          "PROOF": "Same sample data: errors present, import, partial reconciliation, zero unmatched items; illustrative demo",
          "PAYOFF": "Owner closes ledger on time and joins dinner",
          "OFFER": "Book a demo; state actual scope and price when verified",
          "REGION": "Local office, vivid ledger accents, warm evening destination",
          "LANGUAGE": "Target-market idiom and pronunciation checked",
          "CLOCK": "Accepted speech; a demonstrated work session, not four weeks"
        },
        "verdict": "structurally-complete; commercial truth needs product-specific evidence"
      },
      {
        "id": "leak-sensor",
        "category": "hardware",
        "slots": {
          "AUDIENCE": "Homeowner concerned about an unnoticed small leak",
          "PROBLEM": "Water can spread without a prompt alert",
          "STAKES": "A finished room and peace of mind away from home",
          "ACTOR": "Homeowner installs and tests the sensor",
          "WITNESS": "Homeowner plus phone alert log",
          "TRIGGER": "Finds an old unnoticed puddle",
          "FAILED_MODEL": "Occasional visual checks will always catch leaks",
          "HELPER": "Installer or supported product demo",
          "REFRAME": "Detect locally and notify promptly when water contacts sensor",
          "PRODUCT": "Exact sensor model, app screen and packaging",
          "RITUAL": "Place according to instructions; wet-test with controlled small water amount",
          "PROOF": "Dry baseline, controlled contact, triggered signal, received alert with stated measured times",
          "PAYOFF": "Same room protected; homeowner leaves after a successful test",
          "OFFER": "Select compatible kit and verify notification requirements",
          "REGION": "Recognizable regional utility room, cobalt/coral visual accents",
          "LANGUAGE": "Local voice and exact app terminology",
          "CLOCK": "Accepted speech; seconds/minutes of controlled test, not weeks"
        },
        "verdict": "structurally-complete; commercial truth needs product-specific evidence"
      }
    ],
    "scope": "Transferable argument, not a guarantee of persuasion in every market."
  },
  "attention_policy": {
    "claim": "Authored attention design; no measured viewer dopamine or retention.",
    "max_unexplained_gap_s": 4,
    "max_unchanged_visual_world_s": 12,
    "rules": [
      "Every second belongs to a meaningful action, information change or deliberately sustained question.",
      "An event needs a visible/audible change and a narrative reason; a cut or blink is insufficient.",
      "Micro-payoff must open or advance the next question until the final CTA closes it.",
      "A hold above the review threshold requires a precise suspense/acting reason, not a pacing excuse.",
      "No guaranteed no-drop-off assertion without audience analytics."
    ],
    "families": [
      "information-gap",
      "contradiction",
      "specificity",
      "anticipation",
      "reaction",
      "sensory-detail",
      "visual-world-change",
      "mechanism-reveal",
      "progressive-proof",
      "callback",
      "agency",
      "payoff"
    ]
  },
  "pronunciation_policy": {
    "language": "uk",
    "mode": "spoken",
    "music": false,
    "written_marks": "U+0301 after stressed vowel in every multisyllabic Ukrainian occurrence, including inflections, quotations and CTA.",
    "basis": "Contextual dictionary/native adjudication per occurrence; no first-vowel default.",
    "provider_support": "Audition actual provider; accents can be ignored or misread. Preserve exact submitted bytes.",
    "acceptance": "All actual occurrences heard; stress, consonants and coverage pass; uncertainty fails acceptance.",
    "repair": "Version only failing phrase if supported, then re-align and listen to full assembled recording; never auto-change provider.",
    "caption_normalization": "Remove U+0301 only; preserve Ukrainian letters, apostrophes and wording."
  },
  "vocal_performance_policy": {
    "required": true,
    "score": "videos/gopure-dynamic/vocal-score.json",
    "fields": [
      "speaker",
      "context",
      "intention",
      "emotion",
      "contour",
      "pace",
      "energy",
      "pause",
      "emphasis",
      "avoid",
      "listening_test",
      "reference"
    ],
    "gate": "Each actual line must have audible context-appropriate delivery and contrast at a turn. Flat or overacted delivery fails independently of correct pronunciation.",
    "source_evidence": [
      "analysis/vocal-reference/source-alarm.mp4",
      "analysis/vocal-reference/source-skepticism.mp4",
      "analysis/vocal-reference/source-payoff.mp4"
    ],
    "owner_feedback": "Current voice is emotionless; include emotions definitely and analyze how references use them."
  },
  "status": "iteration03 in production; accepted identities reused only as references, all scene images and motion newly generated",
  "provenance": {
    "production": "gopure-dynamic",
    "new_story": "Нічого не обрізай",
    "reused": "Iteration02 identity/wardrobe/concern passports and real product packshot; main Resilia reference style/method only.",
    "new": "Every scene composition, moving clip, multi-character brisk audio, lip-sync, edit and report. No prior generated scene or starting frame reused."
  },
  "video_passport": {
    "source_style": "Photoreal drama, close reactions and object inserts; source color moves from cool consultation to warm helper space and bright activity.",
    "target_style": "Photoreal cinematic spoken drama informed by the main Resilia reference. Natural textured skin, motivated depth and foreground shoulders, direct in-scene dialogue and reaction coverage. Never posed stock portraits or soft beauty-ad tableaux.",
    "aspect": "9:16",
    "palette": [
      "#f1e8d8",
      "#6e795a",
      "#ad8133",
      "#25499c",
      "#683042"
    ],
    "lighting": "Directional neutral window light and motivated warmer practicals; controlled readable cheek shadows, dimensional warm-dark backgrounds, scene-specific contrast. Outdoor family scenes stay attractive, bright and locally plausible. Neutral matched proof exposure preserves actual concern comparability.",
    "lens_and_space": "Vary tight reverse angles, medium two-shots, masters, over-shoulder, hand/phone inserts and lateral activity. Strong eyelines. Every new scene starts from a newly staged composition; no constant push-in or portrait restart.",
    "textures": "Oak table, linen, sage glazed tile, blue ceramics, plants; contemporary personal clothing.",
    "caption_safe_area": "Short all-caps white italic phrases with dark outline; no opaque caption box. Keep mouth, hands, product and neck visible.",
    "novelty_rule": "One unique storyboard composition for each generated shot, short informative cuts, concise story turns and reaction/prop changes; camera moves only when motivated.",
    "no_music": true,
    "source_clock_is_template": false,
    "require_storyboard": true,
    "reference_role": "Identity images constrain face/hair/wardrobe only. They are never reused starting scenes. Storyboard staging is unique per shot.",
    "reference_policy": "storyboard-identity-state",
    "require_unique_storyboards": true,
    "camera_policy": {
      "required": true,
      "max_push_fraction": 0.1,
      "forbid_adjacent_pushes": true
    }
  },
  "characters": [
    {
      "id": "oksana",
      "identity": {
        "path": "videos/gopure-fresh/assets/references/mother-baseline.png",
        "sha256": "fd3fb79809ec9038041fc39871f44119cf9c3f1ebaca21868ccd73409b1cc4d8"
      },
      "concern_assignment": "affected",
      "permanent_traits": "Oksana, 54, mother. Mature oval-angular face, hazel eyes, wavy shoulder-length dark hair, silver streak at viewer RIGHT temple, small mole on viewer RIGHT cheek. Preserve facial age lines and real skin.",
      "wardrobe": "ivory scoop cotton shirt for baseline/care/proof; burgundy turtleneck for concealment; cobalt V-neck long-sleeve blouse for birthday",
      "want": "Join her birthday photograph comfortably",
      "need": "Feel heard and choose care herself",
      "fear": "Being treated as a problem to fix",
      "voice": "Oksana speaks her own Ukrainian lines: guarded request, crisp skepticism, self-directed decision and smiling relief.",
      "consistency_keys": [
        "mature face and age lines",
        "silver viewer-right temple streak",
        "small viewer-right cheek mole",
        "hazel eyes",
        "dark wavy shoulder-length hair"
      ],
      "arc": [
        "asks to be cropped out",
        "questions and chooses care",
        "performs own routine",
        "stays in birthday photo"
      ],
      "negative": "No face substitution, de-aging, hair/color drift, garment swapping or exaggerated expressions. Target concern belongs only to her neck, never her face or daughter."
    },
    {
      "id": "iryna",
      "identity": {
        "path": "videos/gopure-fresh/assets/references/daughter.png",
        "sha256": "a54cf736b1dda855636da2625c73ef2b49abe4e82d7a2f3dfbdbcc40996a4cad"
      },
      "concern_assignment": "excluded",
      "permanent_traits": "Iryna, 28, adult daughter. Short dark curly bob, thin round tortoiseshell glasses, warm brown eyes, lightly freckled open face.",
      "wardrobe": "mustard knit cardigan over light-blue OPEN-collar cotton shirt, blue jeans",
      "want": "Help her mother stay included",
      "need": "Listen before solving",
      "fear": "That a well-meant gift becomes more pressure",
      "voice": "Iryna speaks her own fast caring questions and replies; concise voiceover over proof and inserts, never reads other characters as narration.",
      "consistency_keys": [
        "short dark curly bob",
        "round tortoiseshell glasses",
        "mustard cardigan",
        "light blue open collar"
      ],
      "arc": [
        "misses the concern at first",
        "puts phone down and listens",
        "finds practical information",
        "invites mother beside her"
      ],
      "negative": "No face substitution, de-aging, hair/color drift, garment swapping or exaggerated expressions. Never assign Oksanas target concern to this person."
    },
    {
      "id": "larysa",
      "identity": {
        "path": "videos/gopure-fresh/assets/references/neighbor.png",
        "sha256": "a348e5a92b2417e2348d335cd9f7847fe32b1c1fad0df7220961257a289c08d6"
      },
      "concern_assignment": "excluded",
      "permanent_traits": "Larysa, 62, neighbor. Short salt-and-pepper pixie, blue eyes, dimpled cheeks, friendly mature face, no glasses.",
      "wardrobe": "olive knit cardigan over cream scoop-neck shirt, charcoal trousers",
      "want": "Share something manageable",
      "need": "Support another woman without selling a miracle",
      "fear": "Creating false expectations",
      "voice": "Larysa speaks a brisk, grounded practical peer recommendation, no medical authority.",
      "consistency_keys": [
        "short grey pixie",
        "blue eyes",
        "dimpled cheeks",
        "olive cardigan",
        "cream scoop neckline"
      ],
      "arc": [
        "welcomes daughter to tea",
        "asks about mothers convenience",
        "shows her ordinary care product"
      ],
      "negative": "No face substitution, de-aging, hair/color drift, garment swapping or exaggerated expressions. Never assign Oksanas target concern to this person."
    },
    {
      "id": "serhii",
      "identity": {
        "path": "videos/gopure-fresh/assets/references/father.png",
        "sha256": "89279230fa5510a1a3e51deb7d32a6473b971d08ee5fe9185310be7badb8eb52"
      },
      "concern_assignment": "excluded",
      "permanent_traits": "Serhii, 57, husband. Close grey hair, short salt-and-pepper beard, broad friendly mature face.",
      "wardrobe": "navy short-sleeve polo with open button, dark trousers",
      "want": "Make a family birthday photograph",
      "need": "Leave room for his wife at the center",
      "fear": "Missing a small family moment",
      "voice": "Serhii gives one bright brief family-photo call; relaxed mature male voice.",
      "consistency_keys": [
        "close grey hair",
        "short salt-pepper beard",
        "navy short sleeve polo",
        "broad mature face"
      ],
      "arc": [
        "sets phone timer",
        "waits for family to gather",
        "shares joyful photograph"
      ],
      "negative": "No face substitution, de-aging, hair/color drift, garment swapping or exaggerated expressions. Never assign Oksanas target concern to this person."
    }
  ],
  "relationships": [
    {
      "from": "iryna",
      "to": "oksana",
      "relationship": "adult daughter to mother; supportive, no coercion"
    },
    {
      "from": "larysa",
      "to": "iryna",
      "relationship": "neighbor welcomes daughter as peer"
    },
    {
      "from": "serhii",
      "to": "oksana",
      "relationship": "husband shares family photo"
    }
  ],
  "wardrobe_passport": {
    "oksana": {
      "states": [
        {
          "id": "conceal",
          "owner": "oksana",
          "garment": "turtleneck sweater",
          "neckline": "high fitted neck covering neck to chin",
          "color": "burgundy",
          "sleeves": "long",
          "material": "fine knit",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/mother-conceal.png",
            "sha256": "e1cae58516adc8f192ea11ea1990ec4d24f7056d85b744a5812090cc94c4ac50"
          }
        },
        {
          "id": "care",
          "owner": "oksana",
          "garment": "scoop-neck shirt",
          "neckline": "low rounded scoop exposing full neck",
          "color": "ivory",
          "sleeves": "three-quarter ending just below elbows",
          "material": "cotton",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/mother-baseline.png",
            "sha256": "fd3fb79809ec9038041fc39871f44119cf9c3f1ebaca21868ccd73409b1cc4d8"
          }
        },
        {
          "id": "birthday",
          "owner": "oksana",
          "garment": "blouse and dark trousers",
          "neckline": "open V neckline",
          "color": "cobalt blue",
          "sleeves": "long",
          "material": "soft woven fabric",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/mother-birthday.png",
            "sha256": "98e2993a063fa420292f86b6f6433eae4d77087269c5708c24b581338633b2a3"
          }
        }
      ],
      "transitions": [
        {
          "from": "conceal",
          "to": "care",
          "event": "removes-turtleneck",
          "visible_action": "Oksana removes her own burgundy high-collar sweater, revealing ivory scoop-neck shirt; daughter keeps mustard cardigan and OPEN blue shirt."
        },
        {
          "from": "care",
          "to": "birthday",
          "event": "puts-on-birthday-blouse",
          "visible_action": "Oksana selects and puts on her cobalt V-neck blouse; show her finishing cuff fastening beside the removed ivory shirt. All later birthday shots keep this blouse."
        }
      ],
      "continuity": "Clothing persists through every angle and cut until the specifically declared change event. Owner identity is mandatory."
    },
    "iryna": {
      "states": [
        {
          "id": "day",
          "owner": "iryna",
          "garment": "cardigan over shirt and jeans",
          "neckline": "OPEN blue shirt collar, NEVER turtleneck",
          "color": "mustard over light blue",
          "sleeves": "long",
          "material": "knit over cotton",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/daughter.png",
            "sha256": "a54cf736b1dda855636da2625c73ef2b49abe4e82d7a2f3dfbdbcc40996a4cad"
          }
        }
      ],
      "transitions": [],
      "continuity": "Clothing persists through every angle and cut until the specifically declared change event. Owner identity is mandatory."
    },
    "larysa": {
      "states": [
        {
          "id": "day",
          "owner": "larysa",
          "garment": "cardigan over scoop shirt",
          "neckline": "cream SCOOP, not high neck",
          "color": "olive over cream",
          "sleeves": "long",
          "material": "knit over cotton",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/neighbor.png",
            "sha256": "a348e5a92b2417e2348d335cd9f7847fe32b1c1fad0df7220961257a289c08d6"
          }
        }
      ],
      "transitions": [],
      "continuity": "Clothing persists through every angle and cut until the specifically declared change event. Owner identity is mandatory."
    },
    "serhii": {
      "states": [
        {
          "id": "day",
          "owner": "serhii",
          "garment": "polo and dark trousers",
          "neckline": "open-button polo collar",
          "color": "navy",
          "sleeves": "short",
          "material": "pique cotton",
          "fit": "natural relaxed fit",
          "reference": {
            "path": "videos/gopure-fresh/assets/references/father.png",
            "sha256": "89279230fa5510a1a3e51deb7d32a6473b971d08ee5fe9185310be7badb8eb52"
          }
        }
      ],
      "transitions": [],
      "continuity": "Clothing persists through every angle and cut until the specifically declared change event. Owner identity is mandatory."
    }
  },
  "product_change": {
    "id": "oksana-original-neck-appearance",
    "character": "oksana",
    "product_reference": {
      "path": "videos/gopure-fresh/assets/references/product.webp",
      "sha256": "6fcff5feee8fd11527f7b0e64e6bdfa0fb874865703b089d0d520730dce11e6d"
    },
    "claim_source": {
      "path": "product/production-facts.md",
      "sha256": "082bca6925aca5a064018a46b27195e6a230378bac5f3ccb26a1746eba001713"
    },
    "product_identity": "Deep purple goPure jar, brushed silver cap, white rectangular label; unchanged geometry and wording.",
    "evidence_type": "newly-generated-fictional-illustration",
    "not_efficacy_measurement": true,
    "disclosure": "Ілюстрація змін. Результати індивідуальні.",
    "region": "Oksanas neck between jaw and collarbone; face excluded",
    "marker_scale": "0 absent; 1 mild; 2 moderate; 3 conspicuous; 4 severe. Authored ordinal appearance targets only.",
    "markers": [
      "dryness",
      "crepiness",
      "bands"
    ],
    "resolved_max": 0.3,
    "first_use_event": "first-use",
    "proof_states": [
      "week-1",
      "week-2",
      "week-3",
      "week-4"
    ],
    "states": [
      {
        "id": "baseline",
        "story_day": 0,
        "markers": {
          "dryness": [
            2.6,
            3.4
          ],
          "crepiness": [
            2.6,
            3.4
          ],
          "bands": [
            2.6,
            3.4
          ]
        },
        "description": "Oksanas original visibly dry, crepey neck with conspicuous wrinkle bands. Mature face and identity unchanged.",
        "reference": {
          "path": "videos/gopure-fresh/assets/references/mother-baseline.png",
          "sha256": "fd3fb79809ec9038041fc39871f44119cf9c3f1ebaca21868ccd73409b1cc4d8"
        },
        "reference_review": "accepted",
        "after_use": false,
        "acceptance": {
          "path": "videos/gopure-fresh/reviews/state-baseline.json",
          "sha256": "cd3c8ec919d4322ba3980010b5f72cf4cb461beff739e0e6a301a92f28f428e8"
        }
      },
      {
        "id": "first-use",
        "story_day": 0,
        "markers": {
          "dryness": [
            2.6,
            3.4
          ],
          "crepiness": [
            2.6,
            3.4
          ],
          "bands": [
            2.6,
            3.4
          ]
        },
        "description": "First application leaves baseline texture and bands unchanged; cream contact must not erase them.",
        "reference": {
          "path": "videos/gopure-fresh/assets/references/mother-baseline.png",
          "sha256": "fd3fb79809ec9038041fc39871f44119cf9c3f1ebaca21868ccd73409b1cc4d8"
        },
        "reference_review": "accepted",
        "after_use": false,
        "acceptance": {
          "path": "videos/gopure-fresh/reviews/state-first-use.json",
          "sha256": "1e383b55260bed6be4d463e02dc0ef8853f6e0abc072b08c504c8d5245f772c7"
        }
      },
      {
        "id": "week-1",
        "story_day": 7,
        "markers": {
          "dryness": [
            2.6,
            3.4
          ],
          "crepiness": [
            2.6,
            3.4
          ],
          "bands": [
            2.6,
            3.4
          ]
        },
        "description": "First weekly comparison still clearly shows the full declared dry crepey concern and bands.",
        "reference": {
          "path": "videos/gopure-dynamic/storyboard/C17.png",
          "sha256": "7e6a7ca5c13219d7969d3a7870046d750990a8ea6dfe26c0df7645193b34c68e"
        },
        "reference_review": "accepted",
        "after_use": true,
        "acceptance": {
          "path": "videos/gopure-dynamic/reviews/state-week-1.json",
          "sha256": "e88269c2f26298cba0852ceb59b0c54d82bd5c39955e4ee07557256eab715bda"
        }
      },
      {
        "id": "week-2",
        "story_day": 14,
        "markers": {
          "dryness": [
            1.6,
            2.2
          ],
          "crepiness": [
            1.6,
            2.2
          ],
          "bands": [
            1.6,
            2.2
          ]
        },
        "description": "Moderate residual concern: fine crepe reduced, residual horizontal wrinkle texture remains conspicuous enough to compare.",
        "reference": {
          "path": "videos/gopure-dynamic/storyboard/C18.png",
          "sha256": "d601f7d79f6a77b9ff3dda015e8e24d073eefaabe2e47ae7a2dd4013dc7fba13"
        },
        "reference_review": "accepted",
        "after_use": true,
        "acceptance": {
          "path": "videos/gopure-dynamic/reviews/state-week-2.json",
          "sha256": "a3f59842ca018241c7d6e3f464929d73a433909875cd207468bd99270fa911dc"
        }
      },
      {
        "id": "week-3",
        "story_day": 21,
        "markers": {
          "dryness": [
            0.7,
            1.3
          ],
          "crepiness": [
            0.7,
            1.3
          ],
          "bands": [
            0.7,
            1.3
          ]
        },
        "description": "Mild residual concern, visibly smoother than week two; light residual lines are visible and are not the endpoint.",
        "reference": {
          "path": "videos/gopure-dynamic/storyboard/C19.png",
          "sha256": "cfcfe4ef6613de264fe1d54e7c97d42a155597972b01d92e18e530f132749d46"
        },
        "reference_review": "accepted",
        "after_use": true,
        "acceptance": {
          "path": "videos/gopure-dynamic/reviews/state-week-3.json",
          "sha256": "771e0304533f43fb9a8803167809efb1d81e740b4ab0abbb94fcb2a7e00e19a7"
        }
      },
      {
        "id": "week-4",
        "story_day": 28,
        "markers": {
          "dryness": [
            0,
            0.3
          ],
          "crepiness": [
            0,
            0.3
          ],
          "bands": [
            0,
            0.3
          ]
        },
        "description": "Declared dry crepey surface and conspicuous wrinkle bands absent; preserve ordinary adult anatomical folds and mature face, not an ageless mannequin.",
        "reference": {
          "path": "videos/gopure-dynamic/storyboard/C20.png",
          "sha256": "2e4e3ed8d2e8d1f3d5667c180fa743372a5d8484fb78f84ae064d896889f8566"
        },
        "reference_review": "accepted",
        "after_use": true,
        "acceptance": {
          "path": "videos/gopure-dynamic/reviews/state-week-4.json",
          "sha256": "d676880b053765df820562d6a9f96d2038a232713c918b3927d153cca3c59748"
        }
      }
    ],
    "application": "Oksana opens exact purple goPure jar and applies thin layer upward to HER OWN NECK with her own fingertips. Product in hands alone is not application. Keep full baseline concern immediately after first use.",
    "comparison_lock": [
      "same Oksana face and age",
      "same ivory scoop shirt",
      "same eye-level camera distance and lens",
      "same neutral head/neck angle",
      "same diffuse neutral exposure",
      "same unobscured neck region",
      "no beauty filter or lighting trick"
    ],
    "transition": {
      "kind": "matched-dissolve",
      "duration_s": 0.2,
      "hold_min_s": 1.5,
      "instruction": "At explicit elapsed-week boundaries, compositor makes a 0.20-second matched dissolve from preceding actual motion to new actual state. The generator holds only the current state; hold it readable for at least 1.5 seconds.",
      "render_by": "compositor"
    },
    "reject": [
      "no concern at baseline or week one",
      "first-use cure",
      "identical week labels on unchanged concern",
      "wrong person owns change",
      "unresolved conspicuous concern at week four",
      "different face, neck crop, clothes or light masquerades as progress"
    ],
    "application_phases": {
      "patch-test": "Oksana places a tiny dot of cream with her own fingertips on HER OWN INNER FOREARM for a patch test. Do not substitute neck application in this shot. The correct purple goPure jar is present.",
      "neck-application": "Oksana uses her own fingertips to apply a thin layer upward to HER OWN NECK, from collarbone toward jaw. Actual finger-to-neck contact is visible; another person or a jar held without application cannot substitute.",
      "after-application": "After the application, Oksana lowers her hands and the entire neck is visible for inspection. Preserve the obvious dry, crepey bands exactly; no glow, smoothing, sudden cure or repeated application action.",
      "routine": "Oksana closes the silver cap on the purple goPure jar while voicing a manageable daily-care decision. This is the same baseline first-use period; do not show a new application or an improved neck."
    }
  },
  "visual_references": [
    {
      "id": "lviv-home",
      "asset": {
        "path": "videos/gopure-fresh/assets/references/local-world.png",
        "sha256": "8c918a49f8e09d38150e586adb31cfbbe7d849d1c60210a1c88e35dd73e1c5be"
      },
      "region": "Contemporary Ukraine, Lviv domestic-life fiction",
      "rights": "New original generated environment reference; no external photograph reused.",
      "kind": "original-generated-setting-board",
      "use": "Reference real-feeling materials, apartment layout and courtyard depth; NEVER reproduce reference grid. Local current life is not compulsory gloom or saturation.",
      "local_cue": "Lived-in plaster apartment, oak table, books/plants, sage tile, blue ceramics, ordinary courtyard family gathering.",
      "palette": [
        "cream plaster",
        "sage glazed tile",
        "oak",
        "blue ceramic",
        "linen"
      ],
      "review": "Assistant inspected all four settings: believable inhabited spaces, usable daylight and layered depth. Fictional setting, not a claimed documentary street/time record."
    }
  ]
}
