{
  "experiment": "実験#03：AIは、人間が「面白い」と感じるものを遊ぶ前に当てられるか",
  "fixed_at": "2026-10-03",
  "fixed_by": "AI（Claude Code）。人（運営者）の追加の条件にもとづく",
  "note": "ゲームを作る前に決めた。このファイルはこの commit のあと変更しない。変更が必要に見える問題が起きても、ファイルは変えずに、その事実を実験記録に書く",
  "versions": {
    "names": ["X1", "X2", "X3", "X4", "X5"],
    "rules": [
      "「さかさまラン」（実験#02）の仕組みを土台に、AIが5つの版を作る。実験#02 の v1・v2・v3 は評価の対象にしない",
      "操作（タップでボールが天井⇔床を行き来する）と、ゲームの内部の様子の形（ボットが読む部分）は5つとも同じにする。それ以外（速さ・難しさ・見た目・音・得点のしかた など）はAIが決める",
      "5つの版は、人間の評価が始まったあとは変更しない"
    ]
  },
  "order": [
    "1. このルールと、AIの「面白さの評価基準」を固定する（この commit）",
    "2. AIが X1〜X5 を作り、commit する",
    "3. AIが、評価基準にもとづいて「人間にとっての面白さの順位」を予想し、理由とともに commit する（ボットの測定より前）",
    "4. ボットの測定の道具を commit し、X1〜X5 を測り、下の計算式で順位を出して commit する",
    "5. X1〜X5 を P〜T に乱数で割り当て、対応表のハッシュ値を commit する",
    "6. ここで止める。人間が遊ぶ",
    "7. 人間の評価を記録して commit してから、対応表・AIの予想・ボットの結果を開示し、答え合わせをする"
  ],
  "blind": [
    "AIの予想・ボットの結果・対応表・評価基準・X1〜X5 のゲームは、リポジトリの sealed/experiment-003/ に置く。サイトには公開しない（public/evidence にはハッシュ値だけを置く）",
    "サイトに出すのは P〜T のページだけ。P〜T のページから、どの X かが分かる名前やコメントは消す",
    "人間は、評価を出すまで sealed/ の中身・関係する commit の中身・実験#03 の証拠のページを見ない",
    "commit のメッセージにも、予想や結果の中身を書かない"
  ],
  "ai_prediction": {
    "what": "AIの判断による、人間にとっての面白さの順位（1位〜5位。同じ順位はつけない）と、それぞれの理由",
    "basis": "sealed/experiment-003/fun-criteria.md（この commit で固定）にもとづく",
    "when": "5つの版を作ったあと、ボットの測定より前に固定する"
  },
  "bot": {
    "bots_file": "tools/experiment-003/bots.js（実験#02 の修正版のボット tools/experiment-002/bots-fixed.js をそのまま写したもの）",
    "plays": "1つの版につき、ランダムに押すボット・考えて押すボットで各200回。乱数の種は1〜200。ゲーム内の300秒で打ち切り。時間はゲーム内の時間",
    "formula": {
      "M": "考えて押すボットのプレイ時間の中央値（秒）",
      "U": "考えて押すボットの、5秒未満で終わったプレイの割合（0〜1）",
      "R": "考えて押すボットの平均スコア ÷ ランダムに押すボットの平均スコア（ランダムの平均が0のときは、考えて押すボットの平均が1以上なら R=10、そうでなければ R=1）",
      "S1": "max(0, 1 − |M − 40| ÷ 20)　　（40秒でいちばん高い。20秒・60秒で0）",
      "S2": "max(0, 1 − U ÷ 0.10)　　（0% でいちばん高い。10% 以上で0）",
      "S3": "min(1, max(0, (R − 1) ÷ 9))　　（10倍以上でいちばん高い）",
      "bot_score": "S1 + S2 + S3（0〜3）。大きいほど上の順位",
      "ties": "bot_score の差が 0.000001 未満のときは同点とする。順位相関では同点の版に平均の順位を使う。1位・上位2・完全一致を数えるときは、同点を X の番号の小さい順で並べる（同点があったことは記録する）"
    }
  },
  "human": {
    "pages": "P・Q・R・S・T（どれがどの X かは伏せる）",
    "procedure": "スマートフォンで、各ページを3回ずつ遊ぶ。各ページの面白さを5段階（1 つまらない／2 あまり面白くない／3 ふつう／4 面白い／5 とても面白い）で評価し、最後に5つの最終順位（1位〜5位、同じ順位なし）をつける",
    "human_rank": "人間の順位には、最終順位を使う（5段階の評価と食い違っても最終順位を使う）。評価は人の報告として記録する"
  },
  "comparison": {
    "predictors": ["AIの判断による予想順位", "ボットの数値による順位"],
    "same_measures_for_both": [
      { "id": "rho", "name": "順位相関", "how": "スピアマンの順位相関（予想の順位と人間の順位の、ピアソンの相関係数。同点は平均の順位）。−1〜1。小数第3位まで" },
      { "id": "top1", "name": "1位の的中", "how": "予想の1位が、人間の1位と同じ版か（当たり／外れ）" },
      { "id": "top2", "name": "上位2作品の一致", "how": "予想の上位2つと人間の上位2つに、共通する版がいくつあるか（0〜2）" },
      { "id": "exact", "name": "完全一致した順位の数", "how": "予想の順位と人間の順位がまったく同じだった版の数（0〜5）" }
    ],
    "random_baseline": "でたらめに順位をつけた場合の期待値：順位相関 0・1位の的中 20%・上位2の一致 0.8・完全一致 1",
    "classification": {
      "当たった": "順位相関が 0.6 以上で、かつ人間の1位が、予想の上位2つに入っている",
      "外れた": "順位相関が 0 以下、または人間の1位が、予想の4位か5位",
      "どちらとも言えない": "上のどちらでもない"
    },
    "ai_vs_bot": "AIの判断とボットの数値のどちらが人間に近いかは、順位相関の大きいほうとする。差が 0.2 未満なら「差はほとんどない」とする。ほかの3つの尺度も並べて記録する"
  },
  "success_criteria": [
    "1. 5つの版がスマホ幅（375px）でエラーなく遊べる",
    "2. AIの予想順位・ボットの数値による順位・P〜T の割り当てが、人間が遊ぶ前に commit で固定されている",
    "3. AIの判断による予想が「当たった」に分類される"
  ],
  "judgment": {
    "成功": "1・2 を満たし、AIの判断が「当たった」",
    "一部確認": "1・2 を満たし、AIの判断が「どちらとも言えない」",
    "失敗": "AIの判断が「外れた」、または 1 か 2 を満たさない（予想を固定する前に人間が遊んだ、など）"
  },
  "known_limitations": [
    "評価者は1人。5作品・1人の順位相関は偶然でも大きくなりうる（たとえば 0.9 以上でないと、偶然とは言いにくい）。成功しても「AIはいつも当てられる」とは言えない",
    "評価者は実験#02 で、同じ土台の「さかさまラン」を遊んでいる（慣れ・先入観がある）",
    "ルール・評価基準・5つの版・予想・ボット・計算式は、すべて同じAIが作る",
    "面白さを5段階と順位だけで測る"
  ]
}
