島を出るまでの工程数レポートの読み方

数値は stats/escape_reach.yaml にあります。 tests/diagnostics/escapeReachStatsReport.test.ts が、定義(src/assets/world-codex/*.yaml)だけから 計算したものです。工程(interactions・recipes・range系イベントの周期)や土地の発見物を変更したら 再生成します。

npm run stats:escape

この文書は手書きで、再生成しても書き換わりません。 持つのは読み方——何を測ったか、どこに線を 引いたか、何を数えていないか——だけです。数値そのものは1行も書きません(書けば、再生成した YAMLとずれます)。

YAMLの節

unit は、そのレコードの測定値(hops・max_hops)の単位です。件数 (departure_locations・needs・goals)は単位を持ちません。

節 中身
meta 出発集合の土地の数、要るものの数、そのうち目標そのものの数、最も遠いものの工程数
departure 出発集合=島にそのまま在るもの(探索できる島の土地)
needs 要るもの1つずつの工程数と、そこへ最も少ない工程で届いた工程・その入力
unreached 届かなかった要るものの切れ目(鎖が閉じていれば空でもよい)

この表とYAMLが食い違うと npm test が赤くなります。 表に挙げた節がYAMLに在って空でないことと、 表に無い節がYAMLに無いことの両方を、生成元のテストが見ます。

計測方法

数え方の線は src/analysis/escapeReach.ts の冒頭が持ちます。要点だけ挙げると、

要るもの

needs は、目標そのもの——boat・sail・fishing_tool を名乗る型(ContentSkeleton.md 3節の 系統11)——と、そこへ推移的に要求される型。目標そのものの行だけが goal_tag を持ちます。並びは 工程数の昇順で、同じ工程数なら宣言順。

step_kind・step・owner は、その型へ最も少ない工程で届いた工程(interaction か recipe)。 hops が0の型(出発集合)では空です。inputs の tag は、タグで指した入力 ({tag: cutting_tool})ならそのタグ名で、object はそれを満たす型——タグで指した入力では、 島から最も少ない工程で届く型が代表に1つ選ばれます。

切れ目

unreached は、届かなかった型を生みうる工程と、そのうち島から届かない入力(missing)。 この節が空であることが「鎖が閉じている」で、空でない行はどこで切れたかを指します。

このレポートは判定を出さない。 鎖が閉じているかを赤/緑で判定するのは tests/integration/escapeReach.test.ts で、ここが持つのは数字だけです。工程数が長すぎるかどうかは、 この数字を見てから決めます。