# SHIMA BUILDER NAVIGATION SLIM v6.9.2 — RUNTIME AUDIT

監査日：2026-09-09
基準ZIP：SHIMA_BUILDER_NAVIGATION_SLIM_v6.9.1_FULL.zip
基準SHA-256：044adb89167a432ab7a7c6a48331aaeead749fb0e10f6b968bb25361d86ea589
基準サイズ：5,122,189 bytes

## 1. 再現症状

Android幅で`選択中`へ移動後、`作る`と`出力`を押しても選択中表示から離れない。`メニュー`は別のaction handlerを持つため開く。下部操作は3列＋二段目のメニューとして表示される場合がある。

## 2. クリック競合の原因

表示状態として`body.dataset.shimaMobileView = "selected"`を設定していた。ところがNavigation bridgeはクリック元から未限定の`[data-shima-mobile-view="selected"]`を`closest()`で探索していた。

選択中では作る／出力ボタン自身に一致しなくても祖先の`body`へ一致する。この分岐が先に選択中を再適用してreturnするため、後続の作る／出力分岐へ到達しなかった。ZERO Assist側の未限定`[data-zero-mobile-view]`もbody状態属性を操作対象として拾える構造だった。

## 3. レイアウト競合の原因

`shima_ui_reforge.v1.css`は4列だが、後段の`shima_navigation.v1.css`に`repeat(3, ...) !important`が残っていた。四つ目のメニューだけが二段目へ折り返し、タップ面と固定footer高さも不安定になった。

## 4. 修正契約

- 選択中判定：`#zero-mobile-view-switch [data-shima-mobile-view="selected"]`。
- 作る／出力判定：`#zero-mobile-view-switch [data-zero-mobile-view]`。
- ZERO Assist判定も同じフッター内へ限定。
- Navigation bridgeはcapture phaseで実ボタンを先に確定し、表示状態を即時同期。
- 両stylesheetが700px以下で4列を宣言。
- ナビ面はpointer events有効、ボタンは`touch-action: manipulation`。

## 5. 互換性

- 新規prompt：0。
- 削除prompt：0。
- promptデータファイル変更：0。
- input ID／stable ID変更：0。
- checked／出力／保存形式変更：0。
- Positive／Negative routing変更：0。
- R-18境界変更：0。
- 季節背景400件、四季定点48件：維持。

## 6. 自動テスト

- スマホナビ再発専用：2 / 2。
- SLIM関連：33 / 33。
- 全回帰：519 / 519。
- JavaScript構文：合格。
- manifest JSON：合格。
- body状態属性を直接拾う未限定selectorの不存在：合格。
- 4列、pointer events、touch action契約：合格。

## 7. 実ブラウザ保留

この実行環境ではローカル配布物をAndroid実ブラウザへ開く経路がないため未実施。許可された端末では390〜412pxで`作る → 選択中 → 出力 → 作る → メニュー`を往復し、一段4列、表示切替、横溢れ0を最終確認する。

判定：自動回帰合格。選択中から離脱不能になる原因と3列折返し原因の両方を除去した。
