{
  "schema": "adfactory.narrative-contract/v2",
  "status": "authored-contract; media gates separate",
  "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 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."
  },
  "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"
    ]
  },
  "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"
    ]
  },
  "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."
    }
  ],
  "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."
  },
  "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."
    }
  },
  "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."
  }
}
