Files
gogobee/sim_results/summarize.sh
prosolis 5eb3cac992 Sim hardening + H4 calibration findings → Phase J plan
Harden expedition-sim with the three layers a real player carries:
race mods (+1 Human across the board), tier-appropriate equipment
(weapon/armor/helmet/boots/tool promoted from tier 0 to a level-mapped
tier), and a lean consumables bundle (2 heals + 1 buff at T2-T4,
3 heals + 2 buffs at T5). Capture material yields in SimResult so
calibration sweeps actually read out the H4 signal.

Three sweeps in sim_results/ (n=10): bare baseline, +gear/race,
+lean consumables. Headline: yield is gated by combat survival, not
charge counts. Fighter and Mage hit a sharp wall at T3+ even kitted;
no class extracts the T5 dragons_lair boss. Tuning charges before
fixing class survival would over-tune against a strawman, so H4
is now flagged blocked on Phase J.

Phase J appended to gogobee_harvest_charges_plan.md:
J0 baseline at n=30, J1 Fighter T3+ wall, J2 Mage T2+ wall,
J3 T5 boss (sim artifact vs over-tuned vs raid content),
J4 validation matrix.
2026-05-17 13:37:21 -07:00

39 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Aggregate h4_baseline.jsonl into a per-(class,level,zone) table.
# Columns: class, level, zone, n, p50 yield, mean yield, mean rooms, %cleared, %tpk, %fled, %extracted.
set -euo pipefail
infile=${1:-h4_baseline.jsonl}
cd "$(dirname "$0")"
jq -rs '
group_by([.Class, .Level, .Zone])
| map({
class: .[0].Class,
level: .[0].Level,
zone: .[0].Zone,
n: length,
yields: [.[] | .YieldCount],
rooms: [.[] | .Rooms],
outcomes: [.[] | .Outcome]
})
| map(. + {
p50_yield: (.yields | sort | .[(length/2|floor)]),
mean_yield: ((.yields | add) / length),
mean_rooms: ((.rooms | add) / length),
pct_cleared: (([.outcomes[] | select(. == "cleared")] | length) * 100 / .n),
pct_tpk: (([.outcomes[] | select(. == "tpk")] | length) * 100 / .n),
pct_fled: (([.outcomes[] | select(. == "fled")] | length) * 100 / .n),
pct_extracted: (([.outcomes[] | select(. == "extracted")] | length) * 100 / .n)
})
| sort_by(.zone, .class, .level)
| (["class","level","zone","n","p50_yld","mean_yld","mean_rms","%clr","%tpk","%fled","%ext"] | @tsv),
(.[] | [.class, .level, .zone, .n, .p50_yield,
(.mean_yield * 10 | round / 10),
(.mean_rooms * 10 | round / 10),
(.pct_cleared | round),
(.pct_tpk | round),
(.pct_fled | round),
(.pct_extracted | round)] | @tsv)
' "$infile" | column -t -s $'\t'