` は 816px。
**影響**:1440pxのPCでも横スクロールバーが出る。最終行「残弾が尽きて撃てなくなる」の PR-002・N-004 リンクが右端で切れる(スクリーンショットで確認)。
**是正案**:当該表のセルから `white-space:nowrap` を外し、`table { table-layout: fixed; width: 100% }` +長い列に `word-break: break-word` を適用。あるいは表を `overflow-x:auto` のラッパで包む。
---
### 🟠 H-4 privacy.html / newsletter.html / episodes.html がタブレット幅ではみ出す
同じく `white-space:nowrap` を持つ表が原因。
| ページ | 768px時のページ幅 | 超過 |
|---|---|---|
| privacy.html | 946px | +178px |
| newsletter.html | 896px | +128px |
| episodes.html | 840px | +72px |
privacy.html は `| `/` | ` が 1117px(外部送信先の一覧表)。是正案は H-3 と同じ。
---
### 🟠 H-5 E6「観測営業日数」がトップページとダッシュボードで同日に矛盾
| 所在 | 表示 |
|---|---|
| **index.html**(ハードコード) | 「E6の観測期間は**4営業日**で右打ち切り」 |
| dashboard/ | 「50%回復ライン未到達(観測**6営業日**)」 |
| data/live.json | 「8/11終値159.290円・**6営業日**連続未突破」 |
| docs/wp-001.md §3.2 | 未回復(観測4日)※データ末尾 2026-08-07 と明記 |
WP-001 と個票は基準日を明記しているため版として正当。問題は**基準日を書かずに数値をハードコードしている index.html** で、同じ日に dashboard と矛盾表示になる。episodes.html・e6.html・pr-001.html は既に「最新は介入速報へ」に委譲済みで、**index.html だけ取り残されている**。
**是正案**:index.html の当該文を「E6は右打ち切り(最新の観測営業日数は[介入速報](live.html))」に変更するか、`episodes_summary.json` からのJS描画に統一する。
---
### 🟠 H-6 存在しない「PR-003」を公開済みとして告知
`data/news.json` 先頭(2026-08-12・SITE):
> 「事前登録(**PR-001/002/003**・観測プロトコル)が『結果より前に存在した』ことを第三者検証可能に」
**実測**:`docs/pr-003.md` は **404**。registry.json・research.html・HASHES.txt・PROOF.md(PR-001/PR-002/N-005プロトコルのみ列挙)のいずれにも PR-003 は存在しない。実体はリポジトリ内の起案中スケルトンで、同ファイル自身が「8/28以降に公開した場合、第23条により事前登録としての価値は失われる」と記載している。
**抵触**:第11条(未成立の成果を成立と表示)、第23条、第34条(速報にも証拠基準を適用)。
**是正案**:お知らせを「PR-001/002・観測プロトコル(N-005第2事例)」に訂正。news.json は追記式のため、`corrections.json` に訂正記録を追加して履歴を残す(第32条)。
---
### 🟠 H-7 APIドキュメントのヘッダ名・認証要否が実装と一致しない
**実測**:`/api/v1/live` `/api/v1/events` `/api/v1/episodes` `/api/v1/calendar` `/api/v1/mof/watch` は**すべて無認証で 401**。応答は `www-authenticate: FXIR-KEY`、本文は「`X-FXIR-KEY` ヘッダで送信」。
| 所在 | 記載 | 実際 |
|---|---|---|
| live.html 冒頭のコード例 | `curl -s https://fxir.jp/api/v1/live \| jq .`(鍵なし) | **401** |
| live.html / commercial.html | `-H "X-API-Key: "` | ヘッダ名が違い**動作しない** |
| api.html | 「認証は `X-FXIR-KEY` ヘッダのみを正とする」 | 正しい |
**抵触**:第24条(第三者による再現)、第30条(訂正義務)。
**是正案**:live.html・commercial.html のコード例を `-H "X-FXIR-KEY: "` に統一し、無認証例は `curl -s https://fxir.jp/data/live.json`(正本の直読み・実際に200)に置き換える。
---
### 🟠 H-8 「初回コミット」の指定が誤り
verify.html・PROOF.md はいずれも `05a9fa1f5f7ef7803d302c6a123e0c9036896582` を「**初回コミット**」と記載。
**実測(`git log`)**:当該リポジトリの全12コミットのうち **05a9fa1 は10番目**(2026-08-12 10:30:19 JST)。初回コミットは `ffb248ae…`("Create .keep" 同日 00:10:22 JST)。05a9fa1 の後にも `9665e1a`(PROOF.md更新)・`c392bb8`(PROOF.md.ots追加)が続く。
刻印の論理自体は健全(PROOF.md が対象コミットSHAを名指し、そのSHAが全ツリーを束縛する)。誤っているのは**呼称**のみだが、存在時刻証明という主張の中核部分であり、読者が `git log` を引いた瞬間に食い違いに気づく。
**是正案**:「初回コミット」→「**刻印対象コミット**」に改める(内容的にこちらが正確)。
---
## 4. MEDIUM
### M-1 `provenance.json` の `episodes_summary.json` ハッシュが不一致
verify.html は「`output` は本サイトの `/data/` 配下と一致します」と明言するが、当該系列のみ掲示 `9c194516…` に対し実測 `181b46ad…`。他の output 4件(cftc_latest / h41_latest / events / ratecheck)は一致。`episodes_summary.json` 更新時の provenance 再生成漏れ。(第27条・第28条)
### M-2 GitHub「正本リポジトリ」が本番より1デプロイ古い
ルートHTML 36件中10件が差分(`data/live.json`・`data/episodes_summary.json`・`data/news.json`・`e6.html`・`episodes.html`・`faq.html`・`live.html`・`n-003.html`・`pr-001.html`・`verify.html`)。リポジトリの `DEPLOY.md`(20260812c)は当該変更を記載しているのに、変更ファイル自体が未コミット。「リポジトリを取得して検証せよ」という手順で得られるツリーが公開サイトと一致しない。(第24条・第28条)
### M-3 `company.html` が「GitHub fxirjp(公開準備中)」のまま
リポジトリは既に公開済み(12コミット・クローン可)。index.html・verify.html・llms.txt は公開前提で誘導しており、company.html だけ取り残されている。(第30条)
### M-4 status.html(システム状態ページ)が3日停止している
`status.json` の `generated_at` は `2026-08-09T12:25:14+09:00` のまま全コンポーネント HEALTHY。「Site Deploy (FTPS) last: 2026-08-09」と表示するが、実際には 8/10・8/11・8/12 にデプロイ実績がある(live.json は 8/12 13:36 更新)。**「稼働中」を掲げるページ自体が最も古い**。加えて「鮮度が失われれば STALE と表示される」と述べながら、STALE判定の閾値がページ上にない。(第45条・第24条)
### M-5 `sitemap.xml` の lastmod が実更新日より最大4日古い
lastmod は 2026-08-08(73件)と 2026-08-10(24件)のみ。実際には why.html(8/12新規)・verify.html(8/12改訂)・n-006.html(8/11公開)・episodes.html(8/11-12改訂)・e6.html・pr-001.html(8/12改訂)が更新されている。デプロイ時にファイル mtime から自動生成すべき。
### M-6 JSONの `generated_at` と収録エントリの日付が逆転
`news.json`:generated_at **2026-08-10** に対し収録エントリは 2026-08-12 ×2・08-11 ×6。`registry.json`:generated_at 2026-08-10 に対し N-006 は date 2026-08-11。(`live.json`・`verbal.json` は正しく更新されている。)(第45条)
### M-7 N-006 のHTML版に証拠状態ラベルが1つも存在しない
`n-006.html` を `FACT|CONFIRMED|ESTIMATE|HYPOTHESIS|UNVERIFIED` で全文検索 → **0件**(n-004.html は8件、pr-002.html は6件、guide.html は9件)。正本 `.md` には付いているのに、HTML化で脱落している。同時に、正本 §三の2仮説(HYPOTHESIS)と §七「限界の申告」がHTMLに存在しない。(第10条・第11条・第20条・第22条・第62条)
### M-8 N-006 正本が帰納的一般化を「一般法則(FACT)」と表示
`docs/n-006_v1.0.md` §一:「**一般法則**: 日本の国内リテールFX網は、最後に動いた中央銀行の方向に大きく遅れる(**FACT**・三時代)」。標本は3局面・国内3社(時系列連続はヒロセ1社)・対照1社。METHOD-v1.0 §六「n<8では統計的に結論できない」にも抵触。**是正案**:「作業仮説(HYPOTHESIS)」に格下げし、反証条件を併記。FACT は「各社提示値と理論値の差分」という測定値のみに限定する。(第11条第2項・第21条・第22条)
### M-9 N-006 が実名民間業者への評価的記述を含み、免責の条番号も誤り
「結果として**市場の理論キャリーを超えて円ショートを奨励する価格設定**が国内個人向けに存在していた」(対象はSBI証券・GMOクリック証券・ヒロセ通商を実名特定済み)。また免責が「(**会則第40条**)」と書かれているが、第40条は「ResearchとTradingの分離(情報障壁)」であって免責の根拠条文ではない(正しくは第42条・第43条)。(第5条第3項・第7条)
### M-10 why.html「金額と持続は無関係」— 帰無仮説を採択している
本文および ``(=検索結果・AI要約に直接流通)に「**第三に、金額と持続は無関係**」。WP-001 §3.3 は n=5・Spearman ρ=+0.205・**p=0.741**。トップFAQは正しく「統計的に結論できない」と書いており、同一サイト内で不整合。**是正案**:「金額と持続の関係は現在の標本では**結論できない**(n=5・ρ=+0.205, p=0.741)」。(第22条・第11条・第18条)
### M-11 episodes.html / dashboard の「標本(n=6)」が誤り
両ページとも「介入額が大きいほど効果が長く続く、という関係は現在の標本(**n=6**)では確認できていません」。E6は右打ち切りで、METHOD-v1.0 §二は「未回復は相関標本から除外」、WP-001 §3.3 は「回収が観測された5件(E1〜E5)について」。相関の標本は **n=5**。(第22条・第23条)
### M-12 why.html の「約7円の円高」が一次資料に接続していない
「2026年1月には**レートチェックの報道だけで約7円の円高が起きて**実弾なしで終わった例もあります」。N-003 の当該事例は「157.50→155.66(報道記載値・独自の分足検証は未実施)」=約1.8円。区間定義も出所もページ上にない。(第9条・第21条・第8条)
### M-13 why.html の「規則性」節に証拠状態・反証条件がない
「第一に、発火は速度 — 介入直前には**例外なく**1日1〜2円級の急落があり」。当該節に状態チップが一切ない。介入エピソードのみの選択標本であり、非執行局面との網羅比較は未実施。**是正案**:見出しに **HYPOTHESIS** を付し、反証条件(「直前速度1円未満で介入が確認された場合/急落が生じた非介入局面が体系的に多数存在すると示された場合、棄却」)を明記。(第10条・第20条・第22条)
### M-14 「残弾」の扱いがページ間で不整合
pr-002.html §四は「**『残弾』という呼称は用いない(断定的・煽情的であり証拠原則と相容れない)**」、why.html も「当研究所は『残弾』という比喩自体を禁止」と明記。一方 **n-004.html のタイトル・H1・ナビ表示は「N-004 介入の残弾とFIMAレポ」**、faq.html の見出しも「日本の介入**『残弾』**はいくらですか?」。自己規律との整合を欠く。(第36条・第29条)
### M-15 ai.html が会則の条番号を誤引用
「本ライセンスは**無保証**であり…(**会則第5条**)」。会則第5条は「機関としての中立性」。commercial.html は同趣旨を正しく「(CC BY 4.0 ライセンス第5条)」と書いている。**是正案**:「(CC BY 4.0 第5条)」に修正。会則が検証対象である以上、自サイトによる参照の正確性は本質的である。(第30条)
---
## 5. LOW
| # | 指摘 | 条 |
|---|---|---|
| L-1 | `/en.html` が ``。ナビ・免責フッターも日本語のまま。`/en/index.html` と二重構造で、どちらが正規の英語入口か不明瞭。sitemap上 hreflang もこのURLだけ未設定 | 第42・43条 |
| L-2 | EN/ZH の共通フッターに coi.html / corrections.html / privacy.html へのリンクが**0件**。COI開示への導線が about・verify 以外の5ページから到達不能 | 第38条 |
| L-3 | EN/ZH verify.html に GitHub+OpenTimestamps 節が未反映。閾値 159.483 も英中版に一度も出現しない | — |
| L-4 | `llms.txt` の Episode Profiles がラベル v1.0・URL v1.1・現行 v1.2 の三重不一致。N-006/SPEC-VERBAL/SPEC-COM/SPEC-H41 も未収載 | 第32条 |
| L-5 | `HASHES.txt` の版コメント `# v1.1(次行)` の直下が実際は wp-001.md **v1.3**。また n-003.md / n-004.md / pr-001.md / pr-002.md / methodology_v1.0.md 等、ページが掲示している正本が台帳に未収載(掲示値自体は全て実測一致) | 第32条 |
| L-6 | research.html の WP-001 行だけ版番号・SHA-256 が欠落。**参考訳の en/zh research.html の方が情報量が多い**(v1.3・`139025fd…` を表示) | 第32条 |
| L-7 | N-005 観測プロトコル(判定窓 **本日 8/12〜14**)が registry.json・research.html のいずれにも未登録で、HTMLページからのリンクが1本もない。SPEC-COM v0.1 も research.html の仕様書節に未掲載 | 第19条・第60条 |
| L-8 | research.html は「SPEC-SAAS … **非公開(内部保留)**」と表示するが、`docs/spec-saas_v0.1〜v0.3.md` は **HTTP 200 で取得可能**(sitemap除外は事実)。「未リンク・sitemap除外だが直URLでは取得可能」と正確に書くか、実際に配信から外す | 第58条 |
| L-9 | ナビ・セクションラベルのフォントサイズが **9px**(全ページ共通、「FX INTERVENTION RESEARCH INSTITUTE」「READ」「OBSERVE」等)。装飾ラベルではあるが、モバイルでの可読性下限(推奨12px)を下回る | — |
---
## 6. レスポンシブ実測結果(全55ページ × 4幅)
### ページ幅がビューポートを超えたページ数
| 幅 | 該当ページ数 | 最大超過 |
|---|---|---|
| **320px** | **54 / 55** | +241px(EN/ZH 14ページ) |
| **375px** | **54 / 55** | +186px(EN/ZH 14ページ) |
| **768px** | 4 / 55 | +498px(why.html) |
| **1440px** | 1 / 55 | +116px(why.html) |
### 内訳
| 対象 | 375px時のページ幅 | 原因 | 該当 |
|---|---|---|---|
| 日本語 全ページ | 409px(+34) | `nav` の `min-width:auto` × `flex-wrap:nowrap`(min-content 408px) | 41ページ |
| EN/ZH 全ページ | 561px(+186) | `code`(SHA-256)が `word-break:normal` で 520px | 14ページ |
| why.html | +PC/タブレットでも破綻 | 表セルの `white-space:nowrap` | 1ページ |
| privacy / newsletter / episodes | 768pxで破綻 | 同上 | 3ページ |
### 誤検知として除外したもの(記録)
- `contact.html` / `live.html` / `newsletter.html` の `div.hpw` `div.hp`(`left:-9999px`)— スパム対策のハニーポット。意図的
- `dashboard/` の `#evd-t`(EVIDENCEパネル)— 画面外に待機するスライドインドロワー。ページ幅には影響していない
- `fonts.googleapis.com` / `googletagmanager.com` の読込失敗 — 計測環境でブロックしたもの。本番では発生しない
- ローカル複製で 404 になった `assets/mascot-96.png` `assets/mascot-face-256.png` `dist/…manifest.json` — 本番では**すべて 200** を実測確認済み
### リンク検査
| 対象 | 結果 |
|---|---|
| sitemap 収載 97 URL | **全て 200** |
| sitemap 外の内部URL 26件 | 25件が 200。`/dist/` のみ 403(ディレクトリ一覧の無効化。ZIP本体・manifest は 200 で正常) |
| 外部リンク(mof / boj / federalreserve / cftc / x / note / lin.ee / opentimestamps / github) | **全て到達可能** |
| `.git` 露出・`admin/` `api/config.php` の露出 | **なし**(403 / 404)。リポジトリ内の鍵はすべてプレースホルダで、実鍵の流出は検出されず |
| news.json 内リンク 30件 | **全て 200** |
---
## 7. 前回監査(AUDIT-2026-08-08-R1)からの是正確認
| 前回指摘 | 状態 |
|---|---|
| **N-1** E6の50%回復線が事前登録値と表示値で不一致(159.483 / 159.481) | ✅ **是正**。全ページ 159.483 に統一され、旧値 159.481 はサイト全体で0件(監査アーカイブ内の履歴記述を除く)。corrections.json にも訂正記録あり |
| **N-2** dashboard-manifest の `source_commit: "uncommi"` | 🔶 リポジトリ公開は実現。commit値の実SHA格納は未確認 |
| **N-3** 1時間足値幅の不一致が本文に未反映 | 未確認(本監査では検査していない) |
| **N-4** 「直前速度」の定義が一意でない | 未確認(同上) |
| **N-5** events.html の一次資料が未リンク | 🔶 `data/verbal.json` に口先介入台帳が新設され、片山財務大臣談話が FACT・L4 で収載された。ただし index.html 以外の外部原典リンクの拡充は限定的 |
| **N-6** 仕様書・コード類が sitemap 未登録 | ✅ **是正**。sitemap は 17 → 97 件に拡張 |
| 外部タイムスタンプ(OTS)未刻印 | 🔶 **実施されたが Bitcoin 未確定**。かつ確定として表示している(→ C-3) |
| 第三者レビュー未実施 | 未実施のまま(明示は継続) |
---
## 8. 適合が確認できた主要点(誤検知回避のため明記)
- **数値の再現**:E1〜E6 の Cost・Impact・効率・50%回復線・半減期・期間営業日数を正典CSV(SHA-256 `1fdae032…` 一致)から独立再計算し、**全ページ・全正本と完全一致**。合計 48.94兆円 = episodes.html「約48.9兆円」も一致
- **ハッシュ**:`HASHES.txt` 27件中25件が実測一致。各ページ掲示SHA-256(n-003 / n-004 / pr-001 / pr-002 / methodology / wp-001 全4版 / PDF / episode-profiles v1.2)は**全件一致**
- **Data Package v1.0**:ZIP 実測 `725759e3…` = manifest宣言値、ZIP内8ファイルすべてサイズ・ハッシュ一致(8/8)
- **閾値 159.483 の派生記述**:e6 / faq / guide / pr-001 / PROOF.md / live.json / N-005プロトコルで単一値。旧値の残留ゼロ
- **第35〜37条(速報)**:live.html は「このページは介入の発生を通知しません」「何が観測され/何が確認済み/何が未確認/何で確定するか」を明示。live.json の `policy` に「自動検知の出力は SUSPECTED を上限とする」。**煽動的表現は本監査の範囲で検出されず**
- **第38〜43条(COI・売買推奨との分離)**:api.html・commercial.html・newsletter.html いずれも投資助言の否認、先行提供の否認(Canonical Event First)、シグナル非提供を明記。**シグナル提供と読める表現は検出されず**
- **第19・20条(事前登録)**:pr-001 / pr-002 は判定基準・反証条件・「識別できないもの」を決着前に凍結。運用として模範的
- **第32条(履歴)**:corrections.json に7件(WP-001の4段階、N-003 v1.0→v1.1、EP-PROF、159.481→159.483)を旧版リンク付きで保存
- **セキュリティ**:`admin/` `api/config.php` `api/keys.sample.php` は 403、`.git` は 404。リポジトリ内に実鍵の流出なし
---
## 9. 是正の優先順(推奨)
1. **C-1**(CSVハッシュ不一致)— 検証の看板が実際に破れている唯一の箇所。CSVのLF正規化+HASHES.txt を配信バイトから再生成
2. **C-3 / H-8 / H-6**(OTS未確定の断定・「初回コミット」誤り・PR-003)— いずれも「事前性の証明」に関する記述群。文言修正+`data/verify/WP-001.json` 更新+corrections 追記
3. **C-2**(registry の N-006 リンク)— 1ファイル3行で解消
4. **H-1 / H-2 / H-3 / H-4**(レスポンシブ)— CSS 3〜4行で全55ページ分が解消する
```css
.wrap.hd > nav { min-width: 0; } /* H-1: JA全ページ */
code { word-break: break-all; overflow-wrap: anywhere; } /* H-2: EN/ZH */
.tbl th, .tbl td { white-space: normal; word-break: break-word; } /* H-3/H-4 */
```
5. **C-4**(AIチャットのFACT表示)— 会則第14条の中核。SPEC-CHAT の公開まで含めて設計する
6. **H-5**(index.html の 4営業日ハードコード)— 他ページは修正済みで index だけ取り残されている
7. **CI の一本化** — `deploy → commit → provenance再生成 → HASHES再生成 → status.json更新 → sitemap lastmod更新` を1ジョブに束ねれば、**M-1・M-2・M-4・M-5・M-6 が同時に恒久解決**する
---
## 附録:本監査の再現手順
```bash
# 1. C-1 の再現(掲示値と実測の不一致)
curl -s https://fxir.jp/docs/HASHES.txt | grep swap_
for f in swap_hirose_usdjpy_daily.csv swap_ig_usdjpy_daily.csv; do
echo "$(curl -s https://fxir.jp/data/$f | sha256sum | cut -d' ' -f1) $f"
done # 期待: 掲示値と不一致(CRLF/LF差)
# 2. C-3 の再現(OTS が Bitcoin 未確定であること)
git clone https://github.com/fxirjp/fxir.jp.git && cd fxir.jp
pip install opentimestamps-client
ots info PROOF.md.ots | grep -c BitcoinBlockHeaderAttestation # 期待: 0
ots verify PROOF.md.ots # 期待: Pending confirmation
# 3. H-8 の再現(05a9fa1f は初回コミットではない)
git log --reverse --format="%h %ad %s" --date=iso | head -3 # 期待: ffb248a が初回
# 4. C-2 の再現
curl -s https://fxir.jp/data/registry.json | python3 -m json.tool | grep -A6 '"N-006"'
# 5. H-7 の再現(APIヘッダ名)
curl -s -i https://fxir.jp/api/v1/live | head -12 # 期待: 401 / www-authenticate: FXIR-KEY
# 6. H-1/H-2/H-3 の再現(Playwright)
# viewport 375px で document.documentElement.scrollWidth を測る
# 期待: JA=409, EN/ZH=561, why.html@1440=1556
```
---
**監査報告書 AUDIT-2026-08-12 v1.0**
本報告書は AI(Claude, `claude-opus-5`)が生成した。会則第14条により、本報告書の記述はそれ自体を FACT とは扱えない。ハッシュ・HTTPステータス・`git log`・`ots info`・ブラウザ実測値は附録の手順により第三者が確認できる。レスポンシブ計測は配信HTML・CSS・JSと同一バイトのローカル複製に対して行ったものであり、本番環境での実機確認は別途推奨する(第58条)。評価・解釈・是正案は監査人の見解である。
**DON'T TRUST, VERIFY.**
|