d45629ae29
build / mod (push) Failing after 22s
The Windows log for #122 showed the mod stopping in the UI event (fuel budget 1e9, remaining 0) with known_units <- order_raid <- launch_wave <- ui_select: order_raid recomputed the planner snapshot known_units() for every drone, and the snapshot itself rescanned the whole force and the dedup list per intel entry. A second big Smart order cost drones x intel-log x force-size inside one event. Reproduced in actual WASM with measured per-callback fuel through the exact ui_select(BTN_LAUNCH) handler (diagnostic guest, trigger.patch): before, a 111-drone second order at revealed=13172/known=144 exhausted exactly 1e9 and stopped the mod (an 11-drone order at the same state: 247805865); after, the same scenario passes with max command fuel 32946177/1e9, failures=0, and /stats at tick 2602 byte-identical. A stacked single-point layout dies to one warhead (known=0, cheap order), so the scenario deploys spread clusters with a moved player. Fix: one known_units snapshot per order_raid passed to radar_strikes and choose_target; known_units is a single O(log + force) set pass; price_grid_on reuses its snapshot. Emitter/network targeting and carrier choice semantics are unchanged (native equivalence test against the former predicate; WASM checkpoint counters equal). Limits unchanged; HD/recording untouched; wave size unrestricted. Committed regressions: native snapshot-equivalence and second-smart-order tests; the heavy WASM fixture now orders two Smart raids through the wave screen's launch function (airdef preset + airdef raid) with EW and a combat intel log, four accepted orders asserted; the light contract covers preset and the empty-wave refusal. Core release 195 + 8 scenarios; adapter 65 + 1 boundary + 5 scenarios; light WASM 30 steps; heavy WASM 283 steps (tick max 182413686/300M, command max 6939810/1e9, failures 0). Windows GUI acceptance remains external and is not claimed. Co-Authored-By: Kimi Code (Moonshot AI) <noreply@moonshot.cn>
94 lines
3.1 KiB
JSON
94 lines
3.1 KiB
JSON
{
|
|
"airdef": {
|
|
"diff_sha256": "143fbab5f1fd60981df9ef8ef3081b08a4102507f2588c6942924a7325b5139b",
|
|
"dirty": true,
|
|
"sha": "e6a70004406b34ea17884875ce236a5fb4b849e4"
|
|
},
|
|
"api_level": 29,
|
|
"artifact_sha256": "c4ef7d759524eb053ccd55f0eccdcb49c91954201eb4e0ad923ee9b2828efc4e",
|
|
"build_identity": {
|
|
"checks": {
|
|
"airdef_diff_sha256": true,
|
|
"airdef_dirty": true,
|
|
"airdef_sha": true,
|
|
"artifact_sha256": true,
|
|
"engine_identity": true,
|
|
"engine_pin": true,
|
|
"wit_sha256": true
|
|
},
|
|
"matches": true,
|
|
"path": "/private/tmp/issue-122-raid/airdef-mod/target/horizon-mod/build-identity.json"
|
|
},
|
|
"command": "test-budgets",
|
|
"engine": {
|
|
"identity": "73b9d307048fc44d7f21fa3c829fc5a855d144a6",
|
|
"pin": "73b9d307048fc44d7f21fa3c829fc5a855d144a6"
|
|
},
|
|
"exit_code": 0,
|
|
"measured_fuel": {
|
|
"available": true,
|
|
"callbacks": [
|
|
{
|
|
"budget": 1000000000,
|
|
"callback": "command",
|
|
"calls": 79,
|
|
"failures": 0,
|
|
"max_used": 6939810,
|
|
"mod": "airdef"
|
|
},
|
|
{
|
|
"budget": 10000000,
|
|
"callback": "frame",
|
|
"calls": 2202,
|
|
"failures": 0,
|
|
"max_used": 77,
|
|
"mod": "airdef"
|
|
},
|
|
{
|
|
"budget": 300000000,
|
|
"callback": "tick",
|
|
"calls": 3302,
|
|
"failures": 0,
|
|
"max_used": 182413686,
|
|
"mod": "airdef"
|
|
}
|
|
],
|
|
"scope": "guest callback fuel; excludes host CPU, memory and GPU time"
|
|
},
|
|
"output": " Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.35s\n Running `/private/tmp/issue-122-raid/horizon/target/debug/cargo-horizon-mod horizon-mod test --hmod /private/tmp/issue-122-raid/airdef-mod/target/horizon-mod/airdef.hmod --fuel-profile budget`\nrunning 1 scripts against /private/tmp/issue-122-raid/airdef-mod/target/horizon-mod/airdef.hmod\nfuel airdef command: calls=79 max=6939810 budget=1000000000 failures=0\nfuel airdef frame: calls=2202 max=77 budget=10000000 failures=0\nfuel airdef tick: calls=3302 max=182413686 budget=300000000 failures=0\ntest tests/wasm_budget.toml ... ok (283 steps)\ntest result: ok. 1 passed\n",
|
|
"runtime_limits": {
|
|
"fuel_per_call": {
|
|
"event": 1000000000,
|
|
"frame": 10000000,
|
|
"init": 2000000000,
|
|
"tick": 300000000
|
|
},
|
|
"memory_bytes": 67108864,
|
|
"metering": "source_configured",
|
|
"source": "horizon/crates/horizon-mods/src/runtime.rs",
|
|
"wasmtime_component_model": true,
|
|
"wasmtime_fuel_metering": true
|
|
},
|
|
"scenario": "tests/budgets/wasm_flat_budget.toml",
|
|
"scenario_counts": {
|
|
"accepted_raids_asserted": 4,
|
|
"air_defense_units": 68,
|
|
"frames": 2202,
|
|
"layout_unit_limit": 2000,
|
|
"peak_airborne_observed": null,
|
|
"raid_requests": 2,
|
|
"raid_units_requested": 80,
|
|
"scripts": 1,
|
|
"snapshot_airborne_asserted": 184,
|
|
"snapshot_tick": 2102,
|
|
"steps": 283,
|
|
"ticks": 3302
|
|
},
|
|
"scenario_render_world": "flat at y=64",
|
|
"scenario_sha256": "134cb4667691cf9faa639ed37120941d829cfc13ce45e9638582c409d9e0dd29",
|
|
"schema": 1,
|
|
"status": "passed",
|
|
"wasmtime_version": "48.0.7",
|
|
"wit_sha256": "dded023a150a5f916bc5d935b7f891806728e0118eb7107ad0551d2aad8c70a5"
|
|
}
|