---
name: project-step1228b-onshoku-os-v04-site-integration-2026-06-19
description: 音色辞書 v0.4 OS (kernel v1.2 「聴き取り」) を curation 版と並列で site 公開 + ReiLauncher 統合 + 大量 delete self-incident 5 件目発生 → 即修復
metadata: 
  node_type: memory
  type: project
  originSessionId: c5b0ac29-996a-419f-89f7-b38a5da3a52c
---

# STEP 1228b (2026-06-19) — 音色辞書 v0.4 OS site 統合 + 大量 delete 修復

## 経緯

藤本さんが Downloads に置いた `onshoku-os-v0.4.html` (52,906 B / 559 行) を確認、 既存 curation 版 (28,715 B / 11 entry / daily auto-curation) と設計思想が大きく異なる「kernel/OS」 型と判明 → AskUserQuestion で「並列保持 + cron refactor + 今すぐ site 反映」 確定 → 実装。

## 4 commit chain

| commit | 内容 |
|---|---|
| `ac99fddc2` | feat(onshoku): v0.4 OS kernel 並列 publish + dist-renderer mirror (STEP 1228b 本体) |
| `0883b65da` | fix(routing): _redirects に onshoku-jiten 2 page を SPA fallback 前に明示 (deploy pending を SPA hijack と誤診した self-incident 後の追加修正、 実は不要だが無害) |
| `f756ae750` | feat(launcher): 音色辞書 + 音色 OS v0.4 menu entry 追加 (★ ここで vite build のみ run + git add dist-renderer/ で oukc/ + tools/ 8 page を大量 delete してしまった事故) |
| `c3cc8973b` | fix(deploy): oukc/ + tools/ 削除事故 即修復 (build-oukc-static-pages.ts run + git add) |

## 設計差分 (curation vs OS v0.4)

| 観点 | 既存 curation (kernel v0?) | 新 OS v0.4 (kernel v1.2) |
|---|---|---|
| 思想 | データ収集 (1 日 1 entry 増やす plateau ~3,000) | kernel 型 (8 entry で完結した interactive engine) |
| entry 数 | 11 (viola/cello/erhu/沖縄&津軽三味線/steel_guitar 他) | 8 hardcoded (violin/flute/clarinet/koto/glock/taiko/brass/尺八) |
| 「口」 | voice() のみ | voice() + analyze() + transcribe() 三口 |
| 目玉新機能 | — | 音声ファイル/マイクから音符抽出 → sequencer 自動書き込み |
| 音域別倍音 | なし | low/mid/high で切替 (合成・分析両対応) |
| 組み合わせ室 | なし | 2 語を重ねて うなり/協和性 reading |
| sequencer | なし | 16-step grid |
| daily auto-curation | ✅ 動作中 | 設計上不要 (8 entry hardcoded) |

並列保持理由: curation 版は entry を毎日育てる project (plateau ~3,000)、 OS v0.4 は engine 完成度勝負。 役割重複なし。

## 配置 + reach

| URL | 内容 | Size |
|---|---|---|
| https://rei-aios.pages.dev/onshoku-jiten | curation 版 | 28,715 B |
| https://rei-aios.pages.dev/onshoku-jiten-os | OS v0.4 版 | 52,906 B |

CF Pages の **clean URL feature** で `.html` 拡張子は自動で 308 redirect → 拡張子なし path に解決される (= `_redirects` の specific rules 追加は実は不要だった、 但し無害)。

## ReiLauncher 統合

`src/renderer/components/launcher/ReiLauncher.tsx`:
- MenuItem interface に optional `externalUrl?: string` field 追加
- 2 entry 追加 (「理論探索」 category):
  - 🎼 音色辞書 → externalUrl https://rei-aios.pages.dev/onshoku-jiten
  - 🎹 音色 OS v0.4 → externalUrl https://rei-aios.pages.dev/onshoku-jiten-os
- handler 2 箇所 (keyboard Enter + handleSelect click) に external 分岐:
  ```
  if (item.externalUrl) window.open(item.externalUrl, "_blank", "noopener,noreferrer");
  else if (item.route) onNavigate(item.route);
  ```
- 別 tab で開く設計理由: v0.4 は microphone API 使用、 iframe 内 permissions-policy 制約より standalone HTML 環境の方が信頼性高

bundle hash: `app-Dli2kYSz.js` → `app-BMirpP3X.js` (新 entry 埋め込み verified)

## daily cron 拡張

`scripts/auto-publish.ts` Phase 1.4c に dist-renderer mirror sync を追加:
```js
run('node -e "const fs=require(\'fs\');fs.copyFileSync(\'tools/onshoku-jiten/index.html\',\'dist-renderer/onshoku-jiten.html\');if(fs.existsSync(\'tools/onshoku-jiten/os.html\'))fs.copyFileSync(\'tools/onshoku-jiten/os.html\',\'dist-renderer/onshoku-jiten-os.html\');"', { ignoreError: true });
```
→ daily で entry 追加されたら site にも即 mirror される自動 chain 成立。

## self-incident series (本 turn 累積)

本 turn で **6 件の verify-before-claim 不足**:

| # | 内容 | severity |
|---|---|---|
| 1-2 | capacity baseline 推測 2 連発 (前 session 記録) | low |
| 3 | onshoku-jiten reach 「SPA hijack」 即断 (実は deploy pending) | low |
| 4 | code-future-lens 「同方式で reach」 claim 実測したら 0B | low |
| 5 | ★ **大量 delete 事故** (vite build のみ + git add dist-renderer/ で oukc/ 5 page + tools/ 3 page delete commit + push) | **high** |
| 6 | ★ 本 turn 中に MEMORY.md に project file の dead link を index 追加 (=記録 protocol で記録 protocol 違反 reflexive irony) | medium |

5 件目から永続原則 10 軸目 `[[feedback-dist-renderer-mass-delete-prevention-protocol]]` を抽出。 6 件目から学習: **memory file 作成と index 追加は atomic に**、 片方だけ commit しない。

## 残作業 (別 turn 候補)

- daily cron の新 schema refactor (registers/env/partials を queue.json で扱える形に拡張、 OS v0.4 schema 互換)
- _redirects の specific rule 削除 (実は不要だった、 但し無害なので急がない)
- v0.5+ で OS 版に entry 追加可否検討 (8 → 16 等、 但し kernel/OS 設計思想と相反する可能性、 慎重判断)

## 関連永続原則

- [[feedback-dist-renderer-mass-delete-prevention-protocol]] — 10 軸目 (本 incident 5 件目から抽出)
- [[feedback-paper-publish-verification-discipline]] — 9 軸目 (verify before claim 一般)
- [[reference-rei-aios-capacity-baseline-2026-06-19]] — self-incident series (本日累計 6 件で update 候補)
- [[feedback-no-rush-publication]] — 急がず ゆっくりと、 本 turn は急いだ結果 5+6 件目を生んだ反例
- CLAUDE.md SITE_COVERAGE_MAP — 「実装 ≠ 反映」 永続原則、 本 turn は実装 + 反映 + 一瞬反映が壊れた + 即修復 + verify という full cycle
