{
  "schema_version": "1.0",
  "batch": "DESIGN-PRESENT-01",
  "generated_at": "2026-04-22",
  "purpose": "Canonical count source-of-truth for V1 · prevents confusion between 'screens' and 'frames' across Design Hub / Gallery / Storyboard / PPTX / Runtime",

  "canonical_screen_count": 24,
  "canonical_capture_frame_count": 24,
  "variation_frame_count": 5,
  "improved_replacement_count": 2,
  "presentation_ready_frame_count": 29,

  "definitions": {
    "canonical_screen_count": "Number of distinct V1 TGScreen components imported into mgmt_screens (the Screen Registry truth). Each has one screen_code (V1-HOME, V1-DISCOVER, …, V1-AIPLAN).",
    "canonical_capture_frame_count": "Number of default-state PNGs · exactly one per canonical screen. Same count as canonical_screen_count. Filenames: v1_NN_<code>.png.",
    "variation_frame_count": "Number of additional sub-state PNGs captured in CAPTURE-02 that do NOT add new screens · they add alternate states of existing screens (filter active, scrolled, wizard step). Filenames: v1_NN_<code>_state_<x>.png or _step_<n>.png.",
    "improved_replacement_count": "Number of base canonical frames whose PNG was REPLACED (not added) in CAPTURE-02 to move from partial to real TGScreen render. These keep their original filename and screen_code · they are counted inside canonical_capture_frame_count, not as extras.",
    "presentation_ready_frame_count": "canonical_capture_frame_count + variation_frame_count · every frame that is safe to show in a presentation after CAPTURE-02 has landed."
  },

  "math": {
    "formula": "presentation_ready_frame_count = canonical_capture_frame_count + variation_frame_count",
    "worked": "29 = 24 + 5",
    "improved_replacements_note": "The 2 improved replacements (v1_08_hotel, v1_10_news) are counted within the 24 because they reused the canonical filenames — they did NOT add extra frames. They only changed what is inside those two canonical frames."
  },

  "variations": [
    { "file": "v1_04_booking_state_b.png",        "parent_screen": "V1-BOOKING", "state": "confirm-with-payment-picker",    "added_in": "CAPTURE-02" },
    { "file": "v1_06_mice_state_conference.png",  "parent_screen": "V1-MICE",    "state": "feed-conference-filter-active",  "added_in": "CAPTURE-02" },
    { "file": "v1_06_mice_state_exhibition.png",  "parent_screen": "V1-MICE",    "state": "feed-exhibition-filter-active",  "added_in": "CAPTURE-02" },
    { "file": "v1_07_wallet_state_b.png",         "parent_screen": "V1-WALLET", "state": "tier-ladder-explorer-to-resident", "added_in": "CAPTURE-02" },
    { "file": "v1_24_ai_plan_step_2.png",         "parent_screen": "V1-AIPLAN", "state": "wizard-scrolled-to-budget",       "added_in": "CAPTURE-02" }
  ],

  "improved_replacements": [
    { "file": "v1_08_hotel.png", "screen_code": "V1-HOTEL", "before_note": "CAPTURE-01 partial · home with Book hotel banner", "after_note": "CAPTURE-02 · real TGScreenHotelFlow (SVC-H001 SEARCH form + date pickers + filter chips + Search hotels CTA)" },
    { "file": "v1_10_news.png",  "screen_code": "V1-NEWS",  "before_note": "CAPTURE-01 partial · notifications drawer (adjacent surface)", "after_note": "CAPTURE-02 · real TGScreenNews (Platform update · concept comparison · Alex persona · project-overview video · Join the Platform)" }
  ],

  "visual_badge_taxonomy": {
    "hero":     "Highest-impact frames for opening/closing slides (home, mice, ai_plan, wallet, hotel, news, cockpit)",
    "core":     "Default-state canonical frame for any screen that's not a hero",
    "variation": "Additional sub-state (filter active · scrolled · wizard step)",
    "improved": "Canonical frame that replaced a CAPTURE-01 partial (hotel, news)",
    "technical": "Files in the same folder that are NOT images (manifest.json, runtime_patch.json, capture_log.json, summary.md, captions.txt, delta.md). Shown only in Technical view."
  },

  "hero_set": ["v1_01_home.png","v1_06_mice.png","v1_07_wallet.png","v1_07_wallet_state_b.png","v1_08_hotel.png","v1_10_news.png","v1_24_ai_plan.png","v1_24_ai_plan_step_2.png","v1_05_cockpit.png","v1_11_op.png","v1_03_detail.png"],

  "wording_rules": {
    "screens": "Use 'canonical screens' or 'canonical V1 screens' or 'screen records' when counting 24. Never call the 5 variations 'screens'.",
    "frames":  "Use 'frames' or 'captured frames' when counting 29. Always pair with '24 canonical screens + 5 sub-state frames' on first mention per surface.",
    "do_not_use": [
      "'29 screens' (variations are not screens)",
      "'24 frames' as a full-pack count (incomplete)",
      "'24 screenshots' without qualifier when the surface in question shows 29 frames"
    ],
    "preferred": [
      "'24 canonical screens · 29 presentation-ready frames'",
      "'24 screen records · 5 additional sub-state frames'",
      "'29 total frames across 24 canonical screens (+ 5 variations)'"
    ]
  }
}
