$ pnpm data:test # cwd /Users/king/Desktop/Workspace/SRO/zoen # exit 0 > zoen@0.1.0 data:test /Users/king/Desktop/Workspace/SRO/zoen > pnpm --filter @zoen/game-data test > @zoen/game-data@0.1.0 test /Users/king/Desktop/Workspace/SRO/zoen/packages/game-data > node --test "tests/*.test.mjs" TAP version 13 # Subtest: art library has items and unique ids ok 1 - art library has items and unique ids --- duration_ms: 0.485959 type: 'test' ... # Subtest: every web image exists, is WebP and is small ok 2 - every web image exists, is WebP and is small --- duration_ms: 57.068375 type: 'test' ... # Subtest: every original still exists inside zoen with the recorded hash (originals untouched) ok 3 - every original still exists inside zoen with the recorded hash (originals untouched) --- duration_ms: 419.704875 type: 'test' ... # Subtest: art request ids unique and prioritised ok 4 - art request ids unique and prioritised --- duration_ms: 3.786375 type: 'test' ... # Subtest: every reference image exists (so Codex can compare with current art) ok 5 - every reference image exists (so Codex can compare with current art) --- duration_ms: 3.643875 type: 'test' ... # Subtest: every iconRequest in game data has an art request ok 6 - every iconRequest in game data has an art request --- duration_ms: 5.791542 type: 'test' ... # Subtest: markdown files exist for every category and prompts are non-trivial ok 7 - markdown files exist for every category and prompts are non-trivial --- duration_ms: 0.211333 type: 'test' ... # Subtest: size and composition ok 8 - size and composition --- duration_ms: 0.550208 type: 'test' ... # Subtest: every edge endpoint exists, no duplicate or self edges, graph is connected ok 9 - every edge endpoint exists, no duplicate or self edges, graph is connected --- duration_ms: 0.415 type: 'test' ... # Subtest: no two nodes overlap (≥ 12 units clear between rims) ok 10 - no two nodes overlap (≥ 12 units clear between rims) --- duration_ms: 8.645708 type: 'test' ... # Subtest: no path passes under a node it does not connect (≥ 6 units clear) ok 11 - no path passes under a node it does not connect (≥ 6 units clear) --- duration_ms: 210.356125 type: 'test' ... # Subtest: no two paths cross each other ok 12 - no two paths cross each other --- duration_ms: 4298.503042 type: 'test' ... # Subtest: arc edges really are circular and start/end on their nodes ok 13 - arc edges really are circular and start/end on their nodes --- duration_ms: 0.363167 type: 'test' ... # Subtest: every mastery reachable from every origin without crossing another start ok 14 - every mastery reachable from every origin without crossing another start --- duration_ms: 0.520875 type: 'test' ... # Subtest: path identity: own pure masteries cheapest, hybrids cost more, far poles cost most ok 15 - path identity: own pure masteries cheapest, hybrids cost more, far poles cost most --- duration_ms: 2.361416 type: 'test' ... # Subtest: every build’s recommended origin can wield an item-level-40 weapon within 45 points ok 16 - every build’s recommended origin can wield an item-level-40 weapon within 45 points --- duration_ms: 1.679125 type: 'test' ... # Subtest: icons on nodes exist; nodes without icons carry an art request ok 17 - icons on nodes exist; nodes without icons carry an art request --- duration_ms: 1.333292 type: 'test' ... # Subtest: opportunity cost: far-pole weapons need ~2× the points of the native origin ok 18 - opportunity cost: far-pole weapons need ~2× the points of the native origin --- duration_ms: 0.775333 type: 'test' ... # Subtest: gen-atlas.mjs is deterministic ok 19 - gen-atlas.mjs is deterministic --- duration_ms: 41.437542 type: 'test' ... # Subtest: gen-progression.mjs is deterministic ok 20 - gen-progression.mjs is deterministic --- duration_ms: 40.99375 type: 'test' ... # Subtest: roadmap: unique ids, deps exist, every M0–M2 task has a test and evidence ok 21 - roadmap: unique ids, deps exist, every M0–M2 task has a test and evidence --- duration_ms: 0.970708 type: 'test' ... # Subtest: glossary terms unique and defined ok 22 - glossary terms unique and defined --- duration_ms: 0.1395 type: 'test' ... # Subtest: HUD rects inside the screen, art pieces exist as art requests, no desktop overlap of core widgets ok 23 - HUD rects inside the screen, art pieces exist as art requests, no desktop overlap of core widgets --- duration_ms: 0.343667 type: 'test' ... # Subtest: stack: every layer has a choice, version and cost line; setup steps numbered ok 24 - stack: every layer has a choice, version and cost line; setup steps numbered --- duration_ms: 0.222917 type: 'test' ... # Subtest: exactly 8 skill picks by level 40, all at or before 40 ok 25 - exactly 8 skill picks by level 40, all at or before 40 --- duration_ms: 0.709208 type: 'test' ... # Subtest: 45 atlas points at 40 (39 level points + 6 quest points) ok 26 - 45 atlas points at 40 (39 level points + 6 quest points) --- duration_ms: 0.240042 type: 'test' ... # Subtest: xp to next level strictly increases and pace hits ~2 weeks for typical player ok 27 - xp to next level strictly increases and pace hits ~2 weeks for typical player --- duration_ms: 0.289125 type: 'test' ... # Subtest: origins sum to 40 base attributes and portraits exist ok 28 - origins sum to 40 base attributes and portraits exist --- duration_ms: 0.325875 type: 'test' ... # Subtest: desktop bindings: required keys bound once each ok 29 - desktop bindings: required keys bound once each --- duration_ms: 0.346291 type: 'test' ... # Subtest: 99 unique skills: 15 weapon codices × 6 + 3 pole codices × 3 ok 30 - 99 unique skills: 15 weapon codices × 6 + 3 pole codices × 3 --- duration_ms: 0.607792 type: 'test' ... # Subtest: each weapon codex unlocks at 1/3/6/10/15/20, has a level-1 chain skill and a level-20 signature ok 31 - each weapon codex unlocks at 1/3/6/10/15/20, has a level-1 chain skill and a level-20 signature --- duration_ms: 1.158 type: 'test' ... # Subtest: every skill has timings, 4 facets, and anim/vfx/sfx briefs ok 32 - every skill has timings, 4 facets, and anim/vfx/sfx briefs --- duration_ms: 0.286583 type: 'test' ... # Subtest: icons: reused icons exist, otherwise an art request id is set; no icon used twice ok 33 - icons: reused icons exist, otherwise an art request id is set; no icon used twice --- duration_ms: 0.600625 type: 'test' ... # Subtest: specials and applied states are defined in combat-states.json ok 34 - specials and applied states are defined in combat-states.json --- duration_ms: 0.266 type: 'test' ... # Subtest: 15 builds: 3 per pure pole, 2 per hybrid pair, one build per weapon family ok 35 - 15 builds: 3 per pure pole, 2 per hybrid pair, one build per weapon family --- duration_ms: 0.114208 type: 'test' ... # Subtest: every build has a real choice (more candidates than picks) and exactly 8 legal picks ok 36 - every build has a real choice (more candidates than picks) and exactly 8 legal picks --- duration_ms: 0.584209 type: 'test' ... # Subtest: hotbars only use learned skills; chain ≤ 3 and chainable; buffs on quick slots ok 37 - hotbars only use learned skills; chain ≤ 3 and chainable; buffs on quick slots --- duration_ms: 3.330334 type: 'test' ... # Subtest: weapon bases: requirements follow the formula; icons or requests exist ok 38 - weapon bases: requirements follow the formula; icons or requests exist --- duration_ms: 1.220458 type: 'test' ... # Subtest: origin starter weapons are the families of that pole ok 39 - origin starter weapons are the families of that pole --- duration_ms: 0.456375 type: 'test' ... # Subtest: map is 4096 m and every zone sits inside it ok 40 - map is 4096 m and every zone sits inside it --- duration_ms: 1.13075 type: 'test' ... # Subtest: monsters live in a zone whose level band fits them; art exists ok 41 - monsters live in a zone whose level band fits them; art exists --- duration_ms: 0.658125 type: 'test' ... # Subtest: every weapon base drops from a real monster ok 42 - every weapon base drops from a real monster --- duration_ms: 0.084708 type: 'test' ... # Subtest: quests: 47 in level order, valid zones/givers/targets ok 43 - quests: 47 in level order, valid zones/givers/targets --- duration_ms: 0.342333 type: 'test' ... # Subtest: quest Atlas points land exactly where progression expects them ok 44 - quest Atlas points land exactly where progression expects them --- duration_ms: 0.100167 type: 'test' ... # Subtest: choices pause Auto-Quest; boss quest offers a solo route ok 45 - choices pause Auto-Quest; boss quest offers a solo route --- duration_ms: 0.205166 type: 'test' ... 1..45 # tests 45 # suites 0 # pass 45 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 4601.039208