mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
Theory simulator: - Add 2D side-wall jump physics with yaw sweep for worst-case margin - Generate sidewall theory cases (flat/ascend/descend, wall_offset 0/1) - Add momentum-capabilities.json with band compression and max_reach - Extend models, capabilities, canonical, and renderers for sidewall Full-coverage parkour test suite (tools/test-parkour.py): - Derive test matrix from momentum-capabilities.json - Build linear/neo/ceiling courses via RCON with 7-block clear margin - Use /goto for pathfinding, parse A* and PathMgr log output - Stop-at-first-failure per (family, subfamily, dy, ceil, wo) group - Hierarchical --filter (e.g. linear/flat, ceiling/headhitter/ceil2.5) - Exclude sidewall from default matrix (identical max_reach to linear) Pathing execution fixes: - Align parkour contracts and timing budgets with live test results - Fix jump-entry yaw snapping for grounded handoffs - Template helper and sprint jump template refinements Made-with: Cursor
548 lines
12 KiB
JSON
548 lines
12 KiB
JSON
[
|
|
{
|
|
"case_id": "ceiling-headhitter-sprint-mm12-gap3-ceil3p0",
|
|
"bucket_id": "ceiling:headhitter:sprint:easy",
|
|
"family": "ceiling",
|
|
"subfamily": "headhitter",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "ceiling-headhitter",
|
|
"gap_blocks": 3,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": 3.0,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 104.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "ceiling-headhitter-sprint-mm12-gap3-ceil2p5",
|
|
"bucket_id": "ceiling:headhitter:sprint:boundary",
|
|
"family": "ceiling",
|
|
"subfamily": "headhitter",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "ceiling-headhitter",
|
|
"gap_blocks": 3,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": 2.5,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 104.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "ceiling-headhitter-sprint-mm12-gap1-ceil4p0",
|
|
"bucket_id": "ceiling:headhitter:sprint:reject",
|
|
"family": "ceiling",
|
|
"subfamily": "headhitter",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "ceiling-headhitter",
|
|
"gap_blocks": 1,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": 4.0,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 102.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-ascend-sprint-mm12-gap3-dy1p0",
|
|
"bucket_id": "linear:ascend:sprint:easy",
|
|
"family": "linear",
|
|
"subfamily": "ascend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "linear-ascend",
|
|
"gap_blocks": 3,
|
|
"delta_y": 1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 104.0,
|
|
"y": 81.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-ascend-sprint-mm12-gap0-dy1p0",
|
|
"bucket_id": "linear:ascend:sprint:reject",
|
|
"family": "linear",
|
|
"subfamily": "ascend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "linear-ascend",
|
|
"gap_blocks": 0,
|
|
"delta_y": 1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 81.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-descend-sprint-mm12-gap4-dym1p0",
|
|
"bucket_id": "linear:descend:sprint:easy",
|
|
"family": "linear",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "linear-descend",
|
|
"gap_blocks": 4,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 105.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-descend-sprint-mm12-gap5-dym1p0",
|
|
"bucket_id": "linear:descend:sprint:boundary",
|
|
"family": "linear",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "linear-descend",
|
|
"gap_blocks": 5,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 106.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-descend-sprint-mm12-gap0-dym1p0",
|
|
"bucket_id": "linear:descend:sprint:reject",
|
|
"family": "linear",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "linear-descend",
|
|
"gap_blocks": 0,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-flat-sprint-mm12-gap4-dy0p0",
|
|
"bucket_id": "linear:flat:sprint:easy",
|
|
"family": "linear",
|
|
"subfamily": "flat",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "linear-flat",
|
|
"gap_blocks": 4,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 105.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "linear-flat-sprint-mm12-gap0-dy0p0",
|
|
"bucket_id": "linear:flat:sprint:reject",
|
|
"family": "linear",
|
|
"subfamily": "flat",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "linear-flat",
|
|
"gap_blocks": 0,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "neo-neo-sprint-mm12-wall1",
|
|
"bucket_id": "neo:neo:sprint:easy",
|
|
"family": "neo",
|
|
"subfamily": "neo",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "neo-wall",
|
|
"gap_blocks": null,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": 1,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 102.0,
|
|
"y": 80.0,
|
|
"z": 101.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "neo-neo-sprint-mm12-wall4",
|
|
"bucket_id": "neo:neo:sprint:boundary",
|
|
"family": "neo",
|
|
"subfamily": "neo",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "neo-wall",
|
|
"gap_blocks": null,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": 4,
|
|
"wall_offset": null,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 102.0,
|
|
"y": 80.0,
|
|
"z": 104.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-ascend-sprint-mm12-gap3-dy1p0-wo1",
|
|
"bucket_id": "sidewall:ascend:sprint:easy",
|
|
"family": "sidewall",
|
|
"subfamily": "ascend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-ascend",
|
|
"gap_blocks": 3,
|
|
"delta_y": 1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 1,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 104.0,
|
|
"y": 81.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-ascend-sprint-mm12-gap3-dy1p0-wo0",
|
|
"bucket_id": "sidewall:ascend:sprint:boundary",
|
|
"family": "sidewall",
|
|
"subfamily": "ascend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-ascend",
|
|
"gap_blocks": 3,
|
|
"delta_y": 1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 104.0,
|
|
"y": 81.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-ascend-sprint-mm12-gap0-dy1p0-wo0",
|
|
"bucket_id": "sidewall:ascend:sprint:reject",
|
|
"family": "sidewall",
|
|
"subfamily": "ascend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "sidewall-ascend",
|
|
"gap_blocks": 0,
|
|
"delta_y": 1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 81.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-descend-sprint-mm12-gap4-dym1p0-wo1",
|
|
"bucket_id": "sidewall:descend:sprint:easy",
|
|
"family": "sidewall",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-descend",
|
|
"gap_blocks": 4,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 1,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 105.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-descend-sprint-mm12-gap5-dym1p0-wo0",
|
|
"bucket_id": "sidewall:descend:sprint:boundary",
|
|
"family": "sidewall",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-descend",
|
|
"gap_blocks": 5,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 106.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-descend-sprint-mm12-gap0-dym1p0-wo0",
|
|
"bucket_id": "sidewall:descend:sprint:reject",
|
|
"family": "sidewall",
|
|
"subfamily": "descend",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "sidewall-descend",
|
|
"gap_blocks": 0,
|
|
"delta_y": -1.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 79.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-flat-sprint-mm12-gap4-dy0p0-wo1",
|
|
"bucket_id": "sidewall:flat:sprint:easy",
|
|
"family": "sidewall",
|
|
"subfamily": "flat",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "easy",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-flat",
|
|
"gap_blocks": 4,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 1,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 105.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-flat-sprint-mm12-gap4-dy0p0-wo0",
|
|
"bucket_id": "sidewall:flat:sprint:boundary",
|
|
"family": "sidewall",
|
|
"subfamily": "flat",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "boundary",
|
|
"expected_result": "pass",
|
|
"world_recipe_id": "sidewall-flat",
|
|
"gap_blocks": 4,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 105.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
},
|
|
{
|
|
"case_id": "sidewall-flat-sprint-mm12-gap0-dy0p0-wo0",
|
|
"bucket_id": "sidewall:flat:sprint:reject",
|
|
"family": "sidewall",
|
|
"subfamily": "flat",
|
|
"movement_mode": "sprint",
|
|
"momentum_ticks": 12,
|
|
"difficulty_band": "reject",
|
|
"expected_result": "reject",
|
|
"world_recipe_id": "sidewall-flat",
|
|
"gap_blocks": 0,
|
|
"delta_y": 0.0,
|
|
"ceiling_height": null,
|
|
"wall_width": null,
|
|
"wall_offset": 0,
|
|
"start": {
|
|
"x": 100.5,
|
|
"y": 80.0,
|
|
"z": 100.5
|
|
},
|
|
"goal": {
|
|
"x": 101.0,
|
|
"y": 80.0,
|
|
"z": 100.0
|
|
}
|
|
}
|
|
]
|