WP-1.4 Phase 1 教材ドラフト — Fable教材レビュー承認済(reviewed by fable-20260722)

パイロット3単元: 割合・比・判断推理
「誤答を起点に基礎まで降りる」教材の型・初号機

問題はSPIバンク実在問(sha256照合済・逐語)。誤答フィードバックは全件、誤答の生成式を厳密計算で再現できたものだけを供給(再現できない肢は供給しない=fail-closed)。判断推理はCSPソルバーで一意解を機械証明し、段階点灯SVGの点灯順=解法確定順を機械照合済み。

単元1: 割合(増減率)— warihi-0048

問題(バンク逐語・難易度1): 昨年の売上が200万円、今年の売上が250万円だった。昨年に比べた増加率は何%か。

88% 誤答誘因を再現できず→フィードバック非供給(fail-closed) 25% ✔ 正解((250−200)÷200 = 0.25)— 正解肢にはフィードバックを付けない(契約) 50% → 増加額50万円の「50」をそのまま%と読む誤り 20% → 分母を今年の250万円にする誤り(本命の誤概念) 125% → 増加分でなく今年÷昨年の「倍率」を答える誤り

3色segment(解説の式変形を意味単位で色分け)

「昨年に比べた」= 分母(もとの量)は昨年。ここを先に固定する。
増加率 = 増えた量 ÷ もとの量(昨年)
= (250万円 − 200万円) ÷ 200万円 = 50万円 ÷ 200万円
= 0.25 → 25%

誤答フィードバック(誤答した肢にだけ表示される個別解説)

20%を選んだ人へ — rate.denominator_current 承認

なぜ選びたくなる: 増加分の50万円を、昨年ではなく今年の250万円で割ると 50÷250=0.2 でちょうど20%になるため。

増加率の分母は「比べる基準」です。問題文は「昨年に比べた」なので、増加分50万円を昨年の200万円で割って25%になります。

125%を選んだ人へ — rate.ratio_not_increase 承認

なぜ選びたくなる: 増加分ではなく今年の売上250万円そのものを昨年の200万円で割ると 250÷200=1.25 で125%になるため。

125%は「今年が昨年の何倍か」という比率です。増加率は増えた分だけを見るので (250−200)÷200=25%。比率125%から100%を引くと増加率25%、という関係も確認できます。

50%を選んだ人へ — rate.amount_as_percent 承認

なぜ選びたくなる: 増加額がちょうど50万円なので、金額の数字50をそのまま%として読むと50%を選びたくなるため。

50万円は金額で、%は「もとの量に対する割合」です。50万円が昨年200万円のどれだけにあたるかを割り算で出すと 50÷200=25% です。

単元2: 比(比例配分)— warihi-0103

問題(バンク逐語・難易度1): 7500円をA:B:C=2:5:8の比で分ける。Bの取り分はいくらか。

4000円 → Cの取り分(比の「8」をBと取り違え) 500円 → 1単位分を出したところで止まる誤り 2500円 ✔ 正解(7500÷15=500円/単位 × 5) 1500円 → 総額をBの比数5で直接割る誤り(本命) 1000円 → Aの取り分(比の先頭「2」をBと取り違え・本命)

3色segment

比例配分は「全体が何単位か」→「1単位いくらか」→「Bは何単位分か」の3段で確定する。
全体 = 2 + 5 + 8 = 15単位 が 7500円にあたる
1単位 = 7500円 ÷ 15 = 500円
B = 500円 × 5 = 2500円

誤答フィードバック(4件すべて承認・抜粋2件)

1000円を選んだ人へ — ratio.term_mapping_swap 承認

なぜ選びたくなる: A:B:C=2:5:8 の先頭の「2」をBに対応させて 500円×2=1000円 と計算すると出る値(実際はAの取り分)のため。

比の並びは A:B:C の順なので、Bは2番目の「5」です。1単位500円×5=2500円。先に「A=2, B=5, C=8」と対応表を書き出すと取り違えを防げます。

1500円を選んだ人へ — ratio.divide_by_own_term 承認

なぜ選びたくなる: 総額7500円を、比の合計15ではなくBの比数5で直接割ると 7500÷5=1500円 になるため。

Bの比数5で総額を割ると「全体が5単位」という前提になってしまいます。全体は 2+5+8=15単位。まず 7500÷15=500円 で1単位を出してから ×5 します。

ほか「500円」(1単位で停止)「4000円」(Cと取り違え)も承認済み。基礎遡及リンク: 「割合の基礎」単元(実在・active)+「比とは何か」(基礎数学レーン・準備中のため非公開=死んだリンクは見せない設計)。

単元3: 判断推理(順序)— suiron-junjo-0001 + 段階点灯SVG現物

問題(バンク逐語・難易度3): AさんからEさんまでの5人が、ある試験で1位から5位まで重複なく順位をとった。
・BさんはEさんの1つ上の順位である ・BさんはDさんより順位が上である ・CさんはAさんより順位が上である ・EさんはAさんの1つ上の順位である
このとき、Eさんの順位はどれか。

1位 → Cの順位 誘因を断定できず非供給と裁定(fail-closed) 2位 → Bの順位([B,E]ブロックの上側を答えてしまう・本命) 3位 ✔ 正解 — CSPソルバーで一意解 C=1位, B=2位, E=3位, A=4位, D=5位 を機械証明済み 4位 → Aの順位([E,A]ブロックの下側を答えてしまう・本命) 5位 → Dの順位 同上・非供給裁定

段階点灯SVG(logic_figures.py 実生成・ページ表示でアニメーション再生)

順序の推論 — 連続ペアをブロック化翻訳①: 「BはEの1つ上」→ [B,E]ブロック翻訳②: 「EはAの1つ上」→ [E,A]ブロック ⇒ 連結して [B,E,A]翻訳③: 「BはDより上」「CはAより上」→ 残り2枠の絞り込み1位2位3位4位5位AEの1つ下([E,A])B[B,E]の上側EBの1つ下([B,E])CAより上・残る上位枠DBより下・残り枠⇒ C(1)・B(2)・E(3)・A(4)・D(5) の一列だけ。Eは3位で確定!

点灯順はCSPソルバーの確定トレース順(A→B→E→C→D)と機械照合済み。reduced-motion設定では下の最終状態が即時表示される。

順序の推論 — 連続ペアをブロック化翻訳①: 「BはEの1つ上」→ [B,E]ブロック翻訳②: 「EはAの1つ上」→ [E,A]ブロック ⇒ 連結して [B,E,A]翻訳③: 「BはDより上」「CはAより上」→ 残り2枠の絞り込み1位2位3位4位5位AEの1つ下([E,A])B[B,E]の上側EBの1つ下([B,E])CAより上・残る上位枠DBより下・残り枠⇒ C(1)・B(2)・E(3)・A(4)・D(5) の一列だけ。Eは3位で確定!

最終確定状態(reduced-motion用フレーム)— 配置が一意解と完全一致することを機械照合済み。

誤答フィードバック(承認2件)

2位を選んだ人へ — junjo.block_member_confusion 承認

なぜ選びたくなる: 「BはEの1つ上」で作った[B,E]ブロックの上側Bの順位(2位)を、設問で聞かれているEの順位として答えると出る値のため。

2位はBの順位です。設問が聞いているのはEさん。順位表が完成したら、最後に「どの人の順位を聞かれているか」に戻って読み合わせましょう。

4位を選んだ人へ — junjo.block_member_confusion 承認

なぜ選びたくなる: 「EはAの1つ上」で連結した[E,A]ブロックの下側Aの順位(4位)を、Eの順位として答えると出る値のため。

4位はAの順位です。「EはAの1つ上」なのでEはその1つ上の3位。ブロックを書いたら、上下どちらが誰かをラベルで固定しましょう。

Fable裁定の要点(FABLE_REVIEW_20260722.md より)

供給9件承認・2件非供給裁定・lead例題ピン3問確定。数学的内容は全件Fableが独立再検証(判断推理は4条件から一意解を自力導出しソルバーと一致確認)。

設計原則の実証点: ①再現できない誤答には憶測の解説を書かない(fail-closed) ②SVGの点灯順は人間の「自然な語り順」でなく機械照合可能なソルバー確定順を正とする(恣意的順序の捏造防止) ③正解肢には絶対にフィードバックを付けない(契約でバリデータfail)。この3原則がWP-1.8の51単元量産の型になる。

出典: wt-pilot-wp14/docs/pilot_units_drafts/(commit 491554c)+ FABLE_REVIEW_20260722.md。Phase 2(source JSON実装・全結合検証)進行中。2026-07-22。