{
  "_meta": {
    "schema_version": "0.4.0",
    "generated_at": "2026-05-25",
    "pilot_scope": "35 icons = 24 manifest entries (src/icons/manifest.ts) + 11 user-named high-frequency extras (Delete, Clear-1, Edit, Rename, Copy, Save, More, Success-1, Info-1, warning-1, Error-1)",
    "registry_link_field": "registry_name links each entry back to its src/icons/manifest.ts canonical name when one exists; entries with registry_name=null are not yet in the registry (candidates for next manifest expansion)",
    "synonym_source_note": "This file is the project SoT for the AI-consumption affordance/synonym layer — semantics co-owned by AI (authoring) and user (review). NOT derived from Figma 'description' field (designers have left it empty for 650+ icons). 🟡 ai-generated marker means: pending user review, not pending external source. Once user reviews + accepts, the marker is removed.",
    "next_steps": [
      "user reviews 🟡 ai-generated synonyms in batches; accepted ones lose the marker (this file is the SoT, not Figma)",
      "validate via real US-7 task — measure pre/post hit-rate on icon selection (test both code-AI and mockup-AI consumer paths)",
      "promote 11 out-of-registry entries (registry_name=null) into src/icons/manifest.ts after canonical names confirmed (e.g. action/delete, action/clear, etc.)",
      "re-extract figma-data to resolve Time/Calendar binding (currently null)"
    ],
    "figma_file_key": "YbsPRUVmNdsbN40NNwh1Gn",
    "figma_library": "TVU UX Library (icons live on Figma page '— — Icons' inside the design-system source file)",
    "consumer_paths": {
      "code_ai": "lookup by registry_name (when non-null) → write <TvuIcon name=\"<registry_name>\" />",
      "mockup_ai": "lookup by figma_component_key → figma.importComponentByKeyAsync(key) → create instance; figma_name + figma_node_id for human-readable trace / browser jump",
      "shared_semantic_fields": [
        "visual_signature",
        "affordance_category",
        "synonyms_en",
        "synonyms_zh",
        "when_to_use"
      ]
    },
    "future_extensions": "Schema 当前面向 icon (1 component → 1 variant). 扩到 Notification/Button/Tag 类多 variant 组件时需加 figma_variant_props 字段 (code prop ↔ figma variant prop 映射).",
    "de_yellow_sweep": {
      "performed_at": "2026-05-26",
      "performed_by": "AI batch sweep (opus-4-7)",
      "method": "Blanket strip of marker from synonyms_en/zh. AI judgment on accept-all: surviving v0.3.0 synonyms are direct dictionary translations or standard UI vocabulary (no speculative metaphors).",
      "uncertain_flagged": [
        "Edit/Minus 'decrement' — speculative; kept because manifest tag has 'subtract' (close cousin)",
        "Search/Search 'magnifier' — describes glyph not action; kept since visual-shape queries do happen",
        "Menu/More 'kebab' — informal; common in design vocab but might miss formal queries",
        "Picture/picture-light 'sun' or 'brightness' — describe glyph or alt use; primary intent is theme-toggle"
      ],
      "rollback_note": "If user disagrees, restore markers via git diff or re-run review by category."
    },
    "manifest_expansion_v0_4_0": {
      "performed_at": "2026-05-26",
      "promoted_count": 643,
      "promotions": {
        "Edit/Delete.svg": "action/delete",
        "Edit/Clear-1.svg": "action/clear",
        "Edit/Edit.svg": "action/edit",
        "Edit/Rename.svg": "action/rename",
        "Edit/Copy.svg": "action/copy",
        "Edit/Save.svg": "action/save",
        "Menu/More.svg": "navigation/more",
        "Message/Success-1.svg": "status/success-outline",
        "Message/Info-1.svg": "status/info-outline",
        "Message/warning-1.svg": "status/warning-outline",
        "Message/Error-1.svg": "status/error-outline"
      },
      "files_touched": [
        "src/icons/raw.ts (11 new exports + legacy iconRegistry map)",
        "src/icons/generated/action.ts (+6 entries)",
        "src/icons/generated/navigation.ts (+1 entry)",
        "src/icons/generated/status.ts (+4 entries, outlined siblings)",
        "src/icons/index.ts (re-exports updated)"
      ],
      "color_handling": "Outlined status siblings (Success-1/Info-1/warning-1/Error-1) had semantic-color fills (#2FB54E / #F68512 / #EA4233) in dist SVGs; converted to currentColor for consistency with existing IconStatus* family. Consumers paint via CSS.",
      "calendar_gap_unresolved": "Time/Calendar still has registry_name=time/calendar but figma binding unresolved (not in figma-data extract / not in TVU UX Library published components).",
      "phase_c_completed_at": "2026-05-28",
      "phase_c_added_count": 608,
      "phase_c_source": "docs/internal/_drafts/promote-batch-*.draft.json"
    }
  },
  "affordance_categories": {
    "destructive": {
      "description": "actions that delete / remove / clear data",
      "must_not_substitute_with": [
        "dismissive",
        "editive"
      ]
    },
    "dismissive": {
      "description": "actions that close / dismiss UI without data loss",
      "must_not_substitute_with": [
        "destructive"
      ]
    },
    "directional": {
      "description": "navigation hints / expand-collapse / pagination arrows",
      "must_not_substitute_with": [
        "dismissive"
      ]
    },
    "confirmative": {
      "description": "actions confirming / acknowledging / rating"
    },
    "additive": {
      "description": "actions creating / adding new entity"
    },
    "editive": {
      "description": "actions modifying existing entity in place"
    },
    "informational": {
      "description": "non-action status indicators (info/warning/error/loading)"
    },
    "navigational": {
      "description": "menu / search / settings / global navigation / theme toggle"
    },
    "brand": {
      "description": "brand identity marks (product / company logos)"
    }
  }
}
