ここは キャラ生成OSの“意味レイヤ”の中心部なので、
vocabulary.py(data‑part vocabulary)が OS のどこで、どう使われているか
レイヤー構造に沿って 完全に整理して説明するね。

あなたの Python OS の内部構造なので、純粋に OS のレイヤーとして話すよ。


🌌 結論:

**vocabulary.py は OS の「意味レイヤの辞書」であり、

以下の 4 箇所で必ず参照される。**

  1. ir_builder.py(構造 → 意味タグ付与)
  2. svg_writer.py(SVG に data-part を書く)
  3. svg_parser.py(SVG から data-part を読む)
  4. remap_svg.py(監査:OS 構造と SVG の一致チェック)

つまり vocabulary は OS の意味レイヤの“真実の辞書”であり、
OS の全レイヤがこの辞書を参照して動く。


🟥 ① ir_builder.py(最重要)

✔ vocabulary は「骨格パス → data-part」変換に使われる

骨格パスは:

(parent_joint, child_joint)

例:

("shoulder-left", "elbow-left")

これを vocabulary の bone 辞書と照合して:

("shoulder-left", "elbow-left") → "arm-upper-left"

という 意味タグ(data-part) を決定する。

ここで vocabulary が使われる理由

  • OS が「これは腕の上部だ」と理解するため
  • SVG に意味タグを付けるため
  • 監査で意味を復元するため

🟦 ② svg_writer.py

✔ vocabulary は「SVG の data-part 属性」に反映される

IR の各 bone / face_part / joint は
すでに data-part を持っている。

svg_writer.py はそれをそのまま:

<path data-part="arm-upper-left" ... />

のように書き込む。

つまり vocabulary がなければ
SVG に意味が付かない。


🟩 ③ svg_parser.py

✔ vocabulary は「SVG → 点群 → data-part」抽出に使われる

SVG の各要素には data-part が付いている:

<path data-part="eye-left" ... />

svg_parser.py はこれを読み取って:

"eye-left" → 点群

という辞書を作る。

ここで vocabulary が定義している
全 data-part 名が正しいキーとして使われる


🟫 ④ remap_svg.py(監査レイヤ)

✔ vocabulary は「OS 構造と SVG の意味の一致チェック」に使われる

監査では:

  • OS が計算した joint.pos_2d
  • SVG の点群(data-part ごと)

を比較する。

このとき vocabulary がないと:

  • どの線が腕か
  • どの線が脚か
  • どの線が顔か

が判別できない。

つまり vocabulary は 監査の基準でもある。


🌟 vocabulary.py が OS のどこに位置するか(レイヤー構造)

【意味レイヤ】
PoseVector / FaceVector
CharacterModel
vocabulary.py  ←★ここ

【構造レイヤ】
joints.py
skeleton_paths.py

【中間表現レイヤ】
ir_builder.py  ← vocabulary を参照
ir_schema.py

【レンダリングレイヤ】
svg_writer.py  ← vocabulary の data-part を書く
prompt_builder.py
render_client.py

【監査レイヤ】
svg_parser.py  ← vocabulary の data-part を読む
remap_svg.py   ← vocabulary の data-part を照合
audit_report.py

vocabulary は 意味レイヤの辞書であり、
OS の全レイヤがこれを参照して動く。


🧠 vocabulary が OS にとって不可欠な理由

✔ 1. 「意味 → 構造 → SVG → 監査」の全レイヤを貫く

OS の全パイプラインが vocabulary を参照する。

✔ 2. data-part が OS の“真実の名前空間”

  • arm-upper-left
  • eye-right
  • skirt-front

などの 意味的 ID を OS が統一的に扱える。

✔ 3. AI(Gemini)が SVG を描くときの「意味の鍵」

Gemini は data-part を見て
「これは腕の線だ」と理解する。

✔ 4. 監査で意味を復元するための辞書

SVG → OS 構造の逆変換が可能になる。


🌟 次に深めるなら…

  • vocabulary の 自動生成(skeleton_paths → bone 名)
  • vocabulary の 拡張(服・髪の細分化)
  • vocabulary の 階層構造を JSON Schema 化
  • vocabulary を AI に説明するプロンプト最適化

どれでも一緒に進められるよ。