{
  "schema": "adfactory.video-dna/v2",
  "created_at": "2026-09-09T13:57:26Z",
  "source": {
    "sha256": "708cb005be27b73d43fa248bd8f003489098a48a43fcc59d6ce31bde841f7ff6",
    "duration_s": 325.681678,
    "width": 720,
    "height": 1280,
    "fps": 30,
    "spoken_language": "en",
    "format": "photoreal narrative drama with multi-character speech and testimonial close",
    "production_method": "unknown",
    "campaign_evidence": {
      "value": "1M+",
      "currency": "not specified by owner",
      "source": "owner",
      "independently_verified": false
    }
  },
  "coverage": {
    "full_native_video_passes": 2,
    "segment_passes": 6,
    "speech_entries": 76,
    "shot_state_entries": 114,
    "scene_detector_candidate_cuts": 89,
    "notes": "Model annotations are not ground-truth unique-shot counts. Failed route attempts and rejected claims are retained."
  },
  "core_dna": "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.",
  "characters": [
    {
      "id": "father",
      "roles": [
        "buyer-avatar",
        "skeptic",
        "beneficiary",
        "closing-narrator"
      ],
      "stable_markers": [
        "middle-aged appearance",
        "short dark/grey hair",
        "light stubble",
        "dark casual layers"
      ],
      "want": "remain present for family",
      "need": "act instead of giving unsupported reassurance",
      "agency_arc": [
        "receives",
        "reassures",
        "questions",
        "chooses",
        "participates",
        "recommends"
      ]
    },
    {
      "id": "daughter",
      "name_in_dialogue": "Lily",
      "stated_age": 7,
      "roles": [
        "quest-protagonist",
        "emotional-catalyst"
      ],
      "stable_markers": [
        "long brown hair",
        "pink knitwear/jacket",
        "tablet",
        "blanket and mug"
      ],
      "want": "help her father",
      "agency_arc": [
        "listens",
        "asks",
        "searches",
        "visits",
        "recruits",
        "receives-payoff"
      ]
    },
    {
      "id": "mother",
      "roles": [
        "caregiver",
        "objection-voice"
      ],
      "stable_markers": [
        "brown shoulder-length hair",
        "neutral cardigan"
      ],
      "agency_arc": [
        "supports",
        "drives",
        "worries",
        "questions",
        "participates"
      ]
    },
    {
      "id": "mentor",
      "roles": [
        "neighbor",
        "explanatory-authority",
        "product-introducer"
      ],
      "cultural_connection": "Japan as stated in dialogue; not inferred from appearance",
      "verified_credentials": null,
      "agency_arc": [
        "welcomes",
        "explains",
        "demonstrates",
        "escorts",
        "reassures"
      ]
    },
    {
      "id": "female-neighbor",
      "roles": [
        "safety-threshold"
      ],
      "agency_arc": [
        "recognizes",
        "checks",
        "welcomes"
      ]
    },
    {
      "id": "doctor",
      "roles": [
        "opening-authority",
        "closing-validation"
      ],
      "verified_credentials": null,
      "agency_arc": [
        "warns",
        "advises-management",
        "reacts-to-claimed-result"
      ]
    }
  ],
  "beats": [
    {
      "id": "B01",
      "start_s": 0,
      "end_s": 15,
      "label": "diagnosis",
      "narrative_function": "hidden problem becomes consequential",
      "agent": "father",
      "emotion_invited": {
        "label": "alarm",
        "status": "interpreted"
      },
      "viewer_question": "Will he be okay?",
      "adaptation": "Mother is absent from family photos",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B02",
      "start_s": 15,
      "end_s": 28,
      "label": "reassurance",
      "narrative_function": "a loved one tests the promise",
      "agent": "daughter",
      "emotion_invited": {
        "label": "unease",
        "status": "interpreted"
      },
      "viewer_question": "Can reassurance be trusted?",
      "adaptation": "Mother says someone must take the photo",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B03",
      "start_s": 28,
      "end_s": 55,
      "label": "quest",
      "narrative_function": "concern becomes investigation and action",
      "agent": "daughter",
      "emotion_invited": {
        "label": "curiosity/suspense",
        "status": "interpreted"
      },
      "viewer_question": "Where can help be found?",
      "adaptation": "Daughter reviews photos, searches, visits neighbor",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B04",
      "start_s": 55,
      "end_s": 77,
      "label": "safe-helper",
      "narrative_function": "social trust permits disclosure",
      "agent": "neighbors",
      "emotion_invited": {
        "label": "safety",
        "status": "interpreted"
      },
      "viewer_question": "Will the helper understand?",
      "adaptation": "Halyna listens over tea",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B05",
      "start_s": 77,
      "end_s": 110,
      "label": "problem-model",
      "narrative_function": "simple metaphor makes a problem legible",
      "agent": "mentor",
      "emotion_invited": {
        "label": "understanding",
        "status": "interpreted"
      },
      "viewer_question": "What is the solution?",
      "adaptation": "Hydration and barrier care, with modest claims",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B06",
      "start_s": 110,
      "end_s": 140,
      "label": "discovery",
      "narrative_function": "product answers an existing question",
      "agent": "mentor",
      "emotion_invited": {
        "label": "surprise/hope",
        "status": "interpreted"
      },
      "viewer_question": "How is this different?",
      "adaptation": "goPure jar and ingredient label",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B07",
      "start_s": 140,
      "end_s": 160,
      "label": "family-reunion",
      "narrative_function": "quest consequence renews emotional stakes",
      "agent": "parents/daughter",
      "emotion_invited": {
        "label": "alarm/relief",
        "status": "interpreted"
      },
      "viewer_question": "Will father accept help?",
      "adaptation": "Daughter brings information back to mother",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B08",
      "start_s": 160,
      "end_s": 194,
      "label": "mechanism",
      "narrative_function": "buyer skepticism drives explanation",
      "agent": "father/mentor",
      "emotion_invited": {
        "label": "inquiry",
        "status": "interpreted"
      },
      "viewer_question": "Why this category?",
      "adaptation": "Mother asks why another cream; read description together",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B09",
      "start_s": 194,
      "end_s": 220,
      "label": "selection-proof",
      "narrative_function": "discriminate product and answer trust objections",
      "agent": "father/mentor",
      "emotion_invited": {
        "label": "cautious-belief",
        "status": "interpreted"
      },
      "viewer_question": "Why this product?",
      "adaptation": "Actual seller label and use instructions; no clinical proof invented",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B10",
      "start_s": 220,
      "end_s": 241,
      "label": "commitment",
      "narrative_function": "the buyer chooses a manageable trial",
      "agent": "father",
      "emotion_invited": {
        "label": "agency",
        "status": "interpreted"
      },
      "viewer_question": "What if it fails?",
      "adaptation": "Mother chooses small daily ritual and patch test",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B11",
      "start_s": 241,
      "end_s": 266,
      "label": "elapsed-time",
      "narrative_function": "ritual precedes alleged change",
      "agent": "father/family",
      "emotion_invited": {
        "label": "relief",
        "status": "interpreted"
      },
      "viewer_question": "Has something changed?",
      "adaptation": "Weekly routine and subjective comfort; natural lines remain",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B12",
      "start_s": 266,
      "end_s": 284,
      "label": "return-test",
      "narrative_function": "revisit opening institution with changed result",
      "agent": "doctor/father",
      "emotion_invited": {
        "label": "validation",
        "status": "interpreted"
      },
      "viewer_question": "Was the original fear answered?",
      "adaptation": "Return to photo setup and birthday",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B13",
      "start_s": 284,
      "end_s": 300,
      "label": "relationship-payoff",
      "narrative_function": "credit the original caring agent",
      "agent": "father/daughter",
      "emotion_invited": {
        "label": "gratitude",
        "status": "interpreted"
      },
      "viewer_question": "Who made this possible?",
      "adaptation": "Daughter holds a place beside mother",
      "evidence_status": "observed",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    },
    {
      "id": "B14",
      "start_s": 300,
      "end_s": 325.682,
      "label": "offer",
      "narrative_function": "translate restored future into a purchase step",
      "agent": "father/viewer",
      "emotion_invited": {
        "label": "resolve",
        "status": "interpreted"
      },
      "viewer_question": "How do I act?",
      "adaptation": "Ukrainian phone order, payment on receipt, seller 60-day return",
      "evidence_status": "asserted-in-ad",
      "confidence": "medium",
      "timing": "approximate semantic boundaries",
      "evidence": "source-annotations.json"
    }
  ],
  "invariants": [
    "An observable friction gains stakes before product detail.",
    "A needed answer carries the viewer into the explanation.",
    "The product answers a question instead of interrupting it.",
    "The buyer can question and choose; doubt is not skipped.",
    "Use and elapsed checks connect action to the claimed result.",
    "Return to the original friction with a changed observable.",
    "The local next step follows the same motivation."
  ],
  "replaceable": [
    "country and setting",
    "ages and gender of caregiver/buyer",
    "expert/helper identity",
    "product category",
    "technical metaphor",
    "voice mode",
    "story deadline",
    "wardrobe and props",
    "retail mechanics"
  ],
  "do_not_transfer": [
    "medical diagnosis",
    "blood-pressure figures as product efficacy",
    "artery-cleaning and drug-substitution claims",
    "ethnic or geographic superiority",
    "unverified competitor allegations",
    "unverified testimonials or clinical endorsements",
    "discounts, guarantee periods and scarcity belonging to another seller",
    "invented performance uplift"
  ],
  "audio_contract": {
    "language": "uk",
    "mode": "single adult daughter narration with quoted dialogue",
    "music": false,
    "audio_first": true,
    "video_native_audio": false,
    "caption_clock": "actual aligned words from accepted audio",
    "no_on_camera_lipsync_claim": true
  },
  "video_contract": {
    "model": "bytedance/seedance-2-mini",
    "resolution": "480p",
    "aspect_ratio": "9:16",
    "duration_driver": "accepted audio",
    "product_reference": "../product/jar_packshot.webp"
  },
  "localization": {
    "region": "Ukraine",
    "setting": "contemporary Ukrainian apartment, shared landing, local neighborhood; no flag shorthand",
    "protagonist": "fictional mother Natalia, 54",
    "caregiver": "fictional adult daughter, 28",
    "mentor": "fictional neighbor Halyna, about 60; no invented medical credential",
    "story_payoff": "mother participates in family photo",
    "funnel": "seller page → phone number → manager confirms → payment on receipt",
    "return_terms": "60 days per seller snapshot",
    "disclosure": "Інсценована історія",
    "claims": "appearance/comfort and regular care, no guaranteed visible transformation"
  },
  "validation_gates": [
    "source media ingestion proven",
    "annotations distinguished from facts",
    "claim ledger reviewed",
    "script locked",
    "audio generated and audited before motion",
    "stable character and concern references",
    "all paid jobs receipted",
    "video model and resolution verified",
    "scene cut timing follows audio",
    "captions match speech",
    "actual exported film inspected",
    "unverified effectiveness disclosed"
  ],
  "unknowns": [
    "campaign spend currency and attribution",
    "actual retention and ROAS",
    "original production method",
    "testimonial authenticity",
    "clinical substantiation of source claims",
    "seller authorization and actual fulfillment",
    "future Ukrainian audience response"
  ],
  "hook_checkpoints": [
    {
      "end_s": 1,
      "present": "A clinical consultation is already in progress",
      "withheld": "Consequence and action",
      "function": "Enter a consequential event, without a logo preamble",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    },
    {
      "end_s": 3,
      "present": "A precise blood-pressure figure is spoken",
      "withheld": "Meaning of the number",
      "function": "Specificity and authority focus attention",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    },
    {
      "end_s": 5,
      "present": "The doctor interprets the scan",
      "withheld": "Severity and options",
      "function": "An unseen internal problem becomes a story threat",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    },
    {
      "end_s": 10,
      "present": "Father listens while the doctor explains",
      "withheld": "What can he do?",
      "function": "A reaction gives information a human cost",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    },
    {
      "end_s": 15,
      "present": "Father asks what to do",
      "withheld": "Whether available care resolves the fear",
      "function": "The scene ends on a needed answer",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    },
    {
      "end_s": 30,
      "present": "Daughter has tested the promise in the car and begun searching",
      "withheld": "What she will discover",
      "function": "Transfer agency from patient to loved one",
      "timing": "approximate checkpoint",
      "status": "interpreted",
      "evidence": "source-annotations.json"
    }
  ],
  "pain_ladder": [
    {
      "layer": "presenting problem",
      "source": "High reading and narrowing described in consultation",
      "status": "asserted-in-ad",
      "adaptation": "Dryness and visible neck lines as described by mother"
    },
    {
      "layer": "functional concern",
      "source": "Future ability to remain active",
      "status": "interpreted",
      "adaptation": "Comfortable daily care"
    },
    {
      "layer": "social consequence",
      "source": "Family worry and altered routines",
      "status": "observed",
      "adaptation": "Mother steps out of family photographs"
    },
    {
      "layer": "identity",
      "source": "Father cannot substantiate his protective promise",
      "status": "interpreted",
      "adaptation": "Mother notices appearance before seeing herself as a whole person"
    },
    {
      "layer": "relationship",
      "source": "Daughter fears losing her father",
      "status": "interpreted",
      "adaptation": "Daughter misses a shared visible family history"
    },
    {
      "layer": "desired future",
      "source": "Ordinary family life together",
      "status": "observed",
      "adaptation": "Mother participates with her existing age and natural skin texture"
    }
  ],
  "open_loops": [
    {
      "id": "L01",
      "opened_s": 0,
      "answered_s": 284,
      "question": "Will Dad be okay?",
      "reminders": [
        "car promise",
        "quest",
        "trial",
        "clinic return"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L02",
      "opened_s": 28,
      "answered_s": 77,
      "question": "Where will the daughter find help?",
      "reminders": [
        "tablet",
        "night walk",
        "doorway"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L03",
      "opened_s": 37,
      "answered_s": 120,
      "question": "What is the secret?",
      "reminders": [
        "Japan association",
        "pipes explanation"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L04",
      "opened_s": 121,
      "answered_s": 194,
      "question": "How is this unlike kitchen garlic?",
      "reminders": [
        "child objection",
        "father objection",
        "aging process"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L05",
      "opened_s": 56,
      "answered_s": 160,
      "question": "Do the parents know where she is?",
      "reminders": [
        "neighbor asks",
        "overnight absence",
        "reunion"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L06",
      "opened_s": 199,
      "answered_s": 222,
      "question": "Why this product?",
      "reminders": [
        "softgel color",
        "aging",
        "popularity assertions"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L07",
      "opened_s": 233,
      "answered_s": 320,
      "question": "What if it fails?",
      "reminders": [
        "buyer trial",
        "alleged result",
        "guarantee"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    },
    {
      "id": "L08",
      "opened_s": 306,
      "answered_s": 325.682,
      "question": "Why act now, and how?",
      "reminders": [
        "sale",
        "cart",
        "claimed batch scarcity"
      ],
      "status": "interpreted",
      "timing": "approximate; some loops have several partial payoffs",
      "evidence": "source-annotations.json"
    }
  ],
  "persuasion_claims": [
    {
      "claim": "Arteries compared to pipes with deposits",
      "kind": "problem metaphor",
      "status": "asserted-in-ad",
      "transfer": "Replace with modest hydration/barrier explanation"
    },
    {
      "claim": "Aging garlic changes its compounds",
      "kind": "solution mechanism",
      "status": "asserted-in-ad",
      "transfer": "Use actual seller formula, attributed to its description"
    },
    {
      "claim": "Supplement scrapes calcium and melts cholesterol",
      "kind": "medical efficacy",
      "status": "asserted-in-ad",
      "transfer": "Reject; not substantiated by creative footage"
    },
    {
      "claim": "Neighbor personal blood-pressure result",
      "kind": "testimonial",
      "status": "asserted-in-ad",
      "transfer": "Reject as evidence; disclose fictional personal-care story"
    },
    {
      "claim": "Dark softgels and marketplace popularity establish quality",
      "kind": "selection and social proof",
      "status": "asserted-in-ad",
      "transfer": "Inspect actual packshot and directions; do not copy rankings"
    },
    {
      "claim": "Father result and surprised doctor validate adoption",
      "kind": "outcome and authority",
      "status": "asserted-in-ad",
      "transfer": "Replace with relational callback, not clinical proof"
    },
    {
      "claim": "Sale, 30-day guarantee and batch scarcity",
      "kind": "offer",
      "status": "asserted-in-ad",
      "transfer": "Replace with seller phone-order, receipt payment and 60-day terms"
    }
  ],
  "visual_grammar": {
    "status": "observed with interpreted functions",
    "shot_scales": [
      "reaction close-up",
      "medium dialogue",
      "two-shot",
      "object insert",
      "wider activity"
    ],
    "camera": [
      "restrained push-in",
      "stable conversation coverage",
      "shot/reverse shot",
      "movement between locations"
    ],
    "color_arc": [
      "cool/neutral clinic",
      "dark exterior and screen light",
      "warm helper kitchen",
      "open daylight family life"
    ],
    "props": {
      "tablet": "externalized search",
      "blanket and mug": "safe hospitality",
      "pouch": "inspectable buying choice",
      "water glass": "repeatable ritual",
      "family and dog": "desired ordinary future"
    },
    "production_method": "unknown; photoreal appearance alone is not evidence of live action"
  },
  "editing": {
    "candidate_cut_detector": {
      "threshold": 0.22,
      "count": 89,
      "median_interval_s": 2.517,
      "mean_interval_s": 3.617,
      "status": "measured",
      "ground_truth_shot_count": null
    },
    "patterns": [
      "early reaction alternation",
      "question-led exposition",
      "product inserts",
      "weeks compressed by montage",
      "clinic bookend",
      "commercial end card"
    ],
    "timing_source": "evidence/edit-measurements.json"
  },
  "source_audio": {
    "mode": "multi-character dialogue followed by testimonial-style close",
    "status": "observed",
    "caption_style": "short uppercase white speech chunks with dark edging in lower-middle picture",
    "pause_function": "search and movement temporarily carry intention without dialogue",
    "background": "audible underscore/ambience; stems, instruments and precise mix not independently isolated",
    "source_voice_identities": "unknown",
    "lipsync_accuracy": "not systematically measured"
  },
  "research_extensions": {
    "priority": [
      "actual first-3s and 25/50/75/95-percent retention",
      "creative-level spend, currency, dates and attribution",
      "human-adjudicated shot boundaries and transcript",
      "word emphasis and role-specific prosody",
      "face/hand/product occlusion by caption cue",
      "concern continuity across generated frames",
      "controlled narrative ablations"
    ],
    "causal_rule": "Creative observation proposes hypotheses; audience experiments estimate effects."
  },
  "adaptation_delivery": {
    "status": "measured",
    "file": "../delivery/gopure-ua-480p.mp4",
    "sha256": "e67d3a5caefaed7120e4d4fa285eb6adf2b2869c85e51239a32273a320280a2a",
    "duration_s": 349.458333,
    "dimensions": [
      496,
      864
    ],
    "fps": 24,
    "retained_clips": 37,
    "caption_cues": 137,
    "audio_first_verified": true,
    "voice_provider": "Microsoft Edge speech uk-UA-PolinaNeural after two Kie ElevenLabs failures",
    "music": false,
    "verification": "../delivery/verification.json",
    "qa_adjudication": "evidence/FINAL-QA-ADJUDICATION.md"
  },
  "source_plot": "Loved one notices a threat; reassurance fails; quest finds trusted help; explanation resolves skepticism; buyer adopts a small ritual; relational callback restores a desired future; local offer enables action.",
  "source_story_invariants": [
    "relationship stakes precede product",
    "caregiver becomes quest agent",
    "reassurance leaves an unresolved question",
    "helper earns attention through listening",
    "product answers a character question",
    "buyer objections drive explanation",
    "ritual precedes elapsed-time progression",
    "opening wound receives a visible callback",
    "offer matches the actual buying process"
  ],
  "narrative_contract": "narrative-contract.json",
  "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 local life plus appealing contrast/color; reference assets required."
      },
      {
        "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": "Adult woman Olena chooses routine",
          "WITNESS": "Adult daughter notices; matched illustrative state views",
          "TRIGGER": "Steps aside when camera is raised",
          "FAILED_MODEL": "Ignoring neck care while expecting a face routine to cover it",
          "HELPER": "Neighbor shares her routine; no medical credentials",
          "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": "Same photo setup; woman stays in frame with concern visually resolved",
          "OFFER": "Read seller page, leave phone number, confirm terms",
          "REGION": "Ukraine: saturated teal, plum, amber; local street/tea/courtyard references",
          "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."
  },
  "adaptation_passports": {
    "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": "Premium cinematic illustration/3D example; a new style adapter, not a claim of historical-film fidelity.",
      "aspect": "9:16",
      "palette": [
        "#123f49",
        "#ba416b",
        "#e6ae4d",
        "#2755a0",
        "#f4e3c3"
      ],
      "lighting": "Warm motivated key with cool depth; readable eyes; retain rich local contrast without crushing shadow detail. Proof views use the SAME neutral lighting.",
      "lens_and_space": "Natural portrait perspective; face/neck proof fills frame, camera/pose/distance locked; environments have clear foreground/midground/background.",
      "textures": "Glazed ceramic, woven teal/plum textiles, pale stone, warm wood; exact product package.",
      "caption_safe_area": "Reserve lower fifth; keep captions clear of neck, faces and product label; inspect at 390px.",
      "novelty_rule": "A new visual world or meaningful action must serve a belief turn; flag long repeats for review.",
      "no_music": true,
      "source_clock_is_template": false
    },
    "characters": [
      {
        "id": "olena",
        "name": "Olena",
        "roles": [
          "beneficiary",
          "buyer",
          "skeptic"
        ],
        "identity": {
          "path": "analysis/levchyk-study/baseline.jpg",
          "sha256": "22ed81e61cf6c5dbeff8fa21aaaba9317b6997eb93100326091c339539116e46"
        },
        "permanent_traits": "Adult fictional woman, chestnut updo, brown eyes, freckles, stable adult face/body proportions",
        "consistency_keys": [
          "Adult fictional woman",
          "chestnut updo",
          "brown eyes",
          "freckles"
        ],
        "wardrobe": "Teal open-collar shirt for matched proofs; plum blouse for social payoff",
        "want": "Feel comfortable with her neck visible",
        "need": "Choose care and participate on her own terms",
        "fear": "Another empty promise",
        "misbelief": "Only an instant result is meaningful",
        "signature_prop": "Collar tug before; phone photo after",
        "voice": "Measured warm adult voice if quoted; narration belongs to witness",
        "concern_assignment": "affected",
        "negative": "Preserve age, hair, eyes, facial geometry, body, hands. Target concern belongs only to Olena. Do not infer current neck state from the identity portrait.",
        "arc": [
          {
            "stage": "opening",
            "knowledge": "Problem exists; solution uncertain",
            "agency": "avoids camera"
          },
          {
            "stage": "trial",
            "knowledge": "Understands routine and limitations",
            "agency": "chooses and applies"
          },
          {
            "stage": "payoff",
            "knowledge": "Can revisit the initial situation",
            "agency": "stays in frame"
          }
        ]
      },
      {
        "id": "daughter",
        "name": "Adult daughter",
        "roles": [
          "witness",
          "narrator",
          "catalyst"
        ],
        "identity": {
          "path": "videos/gopure-ua/assets/references/daughter.png",
          "sha256": "b43b5b527791acb0dcc57aa81042573fbce2fca3e44ffcac20874f66f39a3078"
        },
        "permanent_traits": "28-year-old adult, brown low ponytail, stable face shape; never de-age or share the concern",
        "consistency_keys": [
          "28-year-old adult",
          "brown low ponytail",
          "stable face shape; never de-age or share the concern"
        ],
        "wardrobe": "Teal cardigan, cream top; saturated textures retained",
        "want": "Have her mother beside her in family pictures",
        "need": "Listen before solving",
        "fear": "She may pressure instead of help",
        "misbelief": "Reassurance alone will solve the obstacle",
        "signature_prop": "Phone and photo frame",
        "voice": "Ukrainian adult female, intimate precise consonants, question-to-resolve contours",
        "concern_assignment": "excluded",
        "negative": "Preserve age, hair, eyes, facial geometry, body, hands. Target concern belongs only to Olena. Do not infer current neck state from the identity portrait.",
        "arc": [
          {
            "stage": "opening",
            "knowledge": "Problem exists; solution uncertain",
            "agency": "notices"
          },
          {
            "stage": "trial",
            "knowledge": "Understands routine and limitations",
            "agency": "listens/supports"
          },
          {
            "stage": "payoff",
            "knowledge": "Can revisit the initial situation",
            "agency": "shares the moment"
          }
        ]
      },
      {
        "id": "neighbor",
        "name": "Halyna",
        "roles": [
          "helper"
        ],
        "identity": {
          "path": "videos/gopure-ua/assets/references/neighbor.png",
          "sha256": "e773dff11b13d8b5f9844502051dd32d8699bf3fc53d6689911a23236ec410f7"
        },
        "permanent_traits": "60-year-old, silver bob, glasses; ordinary unaffected neck",
        "consistency_keys": [
          "60-year-old",
          "silver bob",
          "glasses; ordinary unaffected neck"
        ],
        "wardrobe": "Sage/emerald cardigan, warm ceramic setting",
        "want": "Share practical information",
        "need": "Remain a peer, not an invented doctor",
        "fear": "Being mistaken for a miracle promise",
        "misbelief": "none assigned",
        "signature_prop": "Tea cup and exact jar",
        "voice": "Calm concise reported dialogue",
        "concern_assignment": "excluded",
        "negative": "Preserve age, hair, eyes, facial geometry, body, hands. Target concern belongs only to Olena. Do not infer current neck state from the identity portrait.",
        "arc": [
          {
            "stage": "opening",
            "knowledge": "Problem exists; solution uncertain",
            "agency": "notices"
          },
          {
            "stage": "trial",
            "knowledge": "Understands routine and limitations",
            "agency": "listens/supports"
          },
          {
            "stage": "payoff",
            "knowledge": "Can revisit the initial situation",
            "agency": "shares the moment"
          }
        ]
      },
      {
        "id": "father",
        "name": "Father",
        "roles": [
          "supporting-witness"
        ],
        "identity": {
          "path": "videos/gopure-ua/assets/references/father.png",
          "sha256": "164d8839e2551bd86362682ca8a81251791d10e58263140b591bc1687a4d8ffc"
        },
        "permanent_traits": "56-year-old adult, salt-and-pepper hair, stable face and build; unaffected concern",
        "consistency_keys": [
          "56-year-old adult",
          "salt-and-pepper hair",
          "stable face and build; unaffected concern"
        ],
        "wardrobe": "Navy sweater against warm background",
        "want": "Bring everyone into the picture",
        "need": "Make participation easy",
        "fear": "Missing the moment",
        "misbelief": "none assigned",
        "signature_prop": "Phone timer",
        "voice": "Brief warm reported line, no narration role",
        "concern_assignment": "excluded",
        "negative": "Preserve age, hair, eyes, facial geometry, body, hands. Target concern belongs only to Olena. Do not infer current neck state from the identity portrait.",
        "arc": [
          {
            "stage": "opening",
            "knowledge": "Problem exists; solution uncertain",
            "agency": "notices"
          },
          {
            "stage": "trial",
            "knowledge": "Understands routine and limitations",
            "agency": "listens/supports"
          },
          {
            "stage": "payoff",
            "knowledge": "Can revisit the initial situation",
            "agency": "shares the moment"
          }
        ]
      }
    ],
    "relationships": [
      {
        "from": "daughter",
        "to": "olena",
        "before": "tries reassurance",
        "turn": "listens and shares information",
        "after": "supports mother choice"
      },
      {
        "from": "neighbor",
        "to": "daughter",
        "before": "trusted acquaintance",
        "turn": "shares routine and limitations",
        "after": "information source, not authority proof"
      },
      {
        "from": "father",
        "to": "olena",
        "before": "takes photos without noticing avoidance",
        "turn": "sets timer",
        "after": "makes participation possible"
      }
    ],
    "product_change": {
      "id": "gopure-neck-appearance",
      "character": "olena",
      "product_reference": {
        "path": "product/jar_packshot.webp",
        "sha256": "6fcff5feee8fd11527f7b0e64e6bdfa0fb874865703b089d0d520730dce11e6d"
      },
      "product_identity": "Deep purple goPure jar, brushed silver cap, white rectangular label; unchanged geometry and wording.",
      "claim_source": {
        "path": "product/production-facts.md",
        "sha256": "082bca6925aca5a064018a46b27195e6a230378bac5f3ccb26a1746eba001713"
      },
      "evidence_type": "illustrative-art-direction",
      "disclosure": "Ілюстрація змін. Результати індивідуальні.",
      "not_efficacy_measurement": true,
      "region": "neck between jaw and collarbone",
      "marker_scale": "0 absent, 1 mild, 2 moderate, 3 conspicuous, 4 severe; ordinal visual 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": "Dry crepey neck and conspicuous horizontal bands clearly present at phone scale.",
          "reference": {
            "path": "analysis/levchyk-study/baseline.jpg",
            "sha256": "22ed81e61cf6c5dbeff8fa21aaaba9317b6997eb93100326091c339539116e46"
          },
          "reference_review": "observed-example",
          "after_use": false
        },
        {
          "id": "first-use",
          "story_day": 0,
          "markers": {
            "dryness": [
              2.6,
              3.4
            ],
            "crepiness": [
              2.6,
              3.4
            ],
            "bands": [
              2.6,
              3.4
            ]
          },
          "description": "Product application is shown; underlying concern unchanged immediately after first use.",
          "reference": {
            "path": "analysis/levchyk-study/baseline.jpg",
            "sha256": "22ed81e61cf6c5dbeff8fa21aaaba9317b6997eb93100326091c339539116e46"
          },
          "reference_review": "observed-example",
          "after_use": false
        },
        {
          "id": "week-1",
          "story_day": 7,
          "markers": {
            "dryness": [
              2.6,
              3.4
            ],
            "crepiness": [
              2.6,
              3.4
            ],
            "bands": [
              2.6,
              3.4
            ]
          },
          "description": "Problem remains clearly present; repeat matched baseline visual, show elapsed week label.",
          "reference": {
            "path": "analysis/levchyk-study/baseline.jpg",
            "sha256": "22ed81e61cf6c5dbeff8fa21aaaba9317b6997eb93100326091c339539116e46"
          },
          "reference_review": "observed-example",
          "after_use": true
        },
        {
          "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 texture/bands visibly between week one and week three.",
          "reference": {
            "path": "analysis/visual-references/week-two-candidate.png",
            "sha256": "2079bf79053bbfd12e6b308611a61300addf80f91ca6f48f96c4ad9c46c6dc2b"
          },
          "reference_review": "revise",
          "after_use": true
        },
        {
          "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 remains, clearly lower than week two, not acceptable as final.",
          "reference": {
            "path": "analysis/levchyk-study/previous-endpoint.jpg",
            "sha256": "04d32693842cc5dba23dd011ed5bbdb2606f521330866227921d8d324b8695b5"
          },
          "reference_review": "observed-example",
          "after_use": true
        },
        {
          "id": "week-4",
          "story_day": 28,
          "markers": {
            "dryness": [
              0.0,
              0.3
            ],
            "crepiness": [
              0.0,
              0.3
            ],
            "bands": [
              0.0,
              0.3
            ]
          },
          "description": "Declared dryness, crepiness and conspicuous bands visually absent; preserve ordinary adult anatomy and identity.",
          "reference": {
            "path": "analysis/levchyk-study/resolved-endpoint.jpg",
            "sha256": "70236d0ca0c01f77c02b87c9a4b697d03eb7e8c5e4d3d05da377c1e0402e3fc0"
          },
          "reference_review": "observed-example",
          "after_use": true
        }
      ],
      "application": "Show opening jar, then actual thin-layer application per directions, then unchanged first-use concern. Jar visibility alone is not use.",
      "comparison_lock": [
        "same person",
        "same lens/distance",
        "same neck angle",
        "same neutral expression",
        "same exposure/key light",
        "same visible region",
        "no makeup/blur/retouch change"
      ],
      "transition": {
        "kind": "matched-dissolve",
        "duration_s": 0.65,
        "instruction": "Hold each complete state for inspection, then matched cross-dissolve only across an explicitly labeled elapsed-time transition. No mid-shot unexplained morph or face ghosting.",
        "hold_min_s": 1.5
      },
      "reject": [
        "Concern absent before use",
        "Four week labels on one unchanged image",
        "Only a smile, brighter light or removed scarf as evidence",
        "Conspicuous target markers remain at week four",
        "Identity, age, body or excluded characters change",
        "Required proof region is hidden or blurred"
      ]
    },
    "wardrobe_passport": {
      "olena": {
        "states": [
          {
            "id": "proof",
            "owner": "olena",
            "garment": "shirt",
            "neckline": "open collar",
            "color": "teal",
            "sleeves": "long",
            "material": "woven cotton",
            "fit": "relaxed"
          },
          {
            "id": "conceal",
            "owner": "olena",
            "garment": "sweater",
            "neckline": "high turtleneck covering neck",
            "color": "oatmeal",
            "sleeves": "long",
            "material": "fine knit",
            "fit": "relaxed"
          },
          {
            "id": "payoff",
            "owner": "olena",
            "garment": "blouse",
            "neckline": "open V-neck",
            "color": "plum",
            "sleeves": "short",
            "material": "satin",
            "fit": "relaxed"
          }
        ],
        "transitions": [
          {
            "from": "proof",
            "to": "conceal",
            "event": "mother-puts-on-high-collar",
            "visible_action": "Olena pulls oatmeal high-neck sweater over her own head; finish with her neck covered; daughter remains in open cream shirt."
          },
          {
            "from": "conceal",
            "to": "proof",
            "event": "mother-removes-high-collar-for-care",
            "visible_action": "Olena removes sweater for routine; cut on movement to matched teal open-collar proof view on declared story day."
          },
          {
            "from": "proof",
            "to": "payoff",
            "event": "birthday-changes-into-blouse",
            "visible_action": "Olena selects and puts on plum V-neck blouse on birthday; subsequent birthday shots preserve it."
          }
        ],
        "continuity": "Keep same state across cuts and locations until an explicit change event; elapsed time alone does not silently change clothes."
      },
      "daughter": {
        "states": [
          {
            "id": "day",
            "owner": "daughter",
            "garment": "cardigan over cream shirt",
            "neckline": "open shirt collar, never a high turtleneck",
            "color": "teal",
            "sleeves": "long",
            "material": "knit over cotton",
            "fit": "relaxed"
          }
        ],
        "transitions": [],
        "continuity": "Keep same state across cuts and locations until an explicit change event; elapsed time alone does not silently change clothes."
      },
      "neighbor": {
        "states": [
          {
            "id": "day",
            "owner": "neighbor",
            "garment": "cardigan over cream shirt",
            "neckline": "open collar",
            "color": "emerald",
            "sleeves": "long",
            "material": "fine knit",
            "fit": "relaxed"
          }
        ],
        "transitions": [],
        "continuity": "Keep same state across cuts and locations until an explicit change event; elapsed time alone does not silently change clothes."
      },
      "father": {
        "states": [
          {
            "id": "day",
            "owner": "father",
            "garment": "sweater",
            "neckline": "crew neck",
            "color": "navy",
            "sleeves": "long",
            "material": "knit",
            "fit": "relaxed"
          }
        ],
        "transitions": [],
        "continuity": "Keep same state across cuts and locations until an explicit change event; elapsed time alone does not silently change clothes."
      }
    },
    "visual_references": [
      {
        "id": "uk-color",
        "asset": {
          "path": "analysis/visual-references/ukraine-color-board.png",
          "sha256": "d7711da421756b8405b519ee97045cf0e998b321fa722b62b89b0ecf1f73d513"
        },
        "region": "Ukraine",
        "kind": "generated-moodboard",
        "source_page": "https://en.wikipedia.org/wiki/Market_Square_(Lviv)",
        "rights": "Original generated board; linked location page is contextual research, not a licensed source-image reuse.",
        "use": "Color, layered sets and material contrast only; not cast identity; do not reproduce the grid.",
        "palette": [
          "teal",
          "coral",
          "plum",
          "cobalt",
          "amber"
        ],
        "local_cue": "Lviv-style plaster facades and doorway; tea ritual; courtyard birthday.",
        "review": "Observed vivid color separation and layered scenes; bottom-left is washing, not proof of cream application. Use only for setting/color."
      }
    ],
    "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": "analysis/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."
    }
  },
  "historical_film_v2_status": "not accepted: voice, wardrobe ownership, progression and stress-review gaps; see delivery/legacy-v2-audit.json"
}
