From 4576c757225c7f8be7ff48699fa8b57502ddd910 Mon Sep 17 00:00:00 2001 From: prosolis <5590409+prosolis@users.noreply.github.com> Date: Wed, 27 May 2026 21:18:48 -0700 Subject: [PATCH] Long expeditions D7-d: corpus re-run + sim heavy-preset fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix sim regression introduced by D5-b: bare `expedition start ` returns the loadout prompt DM without outfitting, so SimRunner.RunExpedition was halting before persisting any expedition. Pass `heavy` from the harness — tier-max packs, no prod paths touched. D7-d corpus (sim_results/, gitignored): n=100 × 10 classes × 5 zones × L10. Leaderboard mirrors J2b — martials 78–82%, casters 21–42%, cluster gap unchanged by long-expedition mechanics. Cleric worst at 21% (L10). Bard/cleric trailers not relieved by autopilot camp pacing; remains J3-territory. T3/T4 cleared runs hit their §2 target durations. D5-d retune decision: no change. phase5BDailyBurnRatePct=50 + per-tier DailyBurn stay as-is — heavy-preset cleared runs end with 78–98% SU surplus; even TPK runs leave packs mostly full. Supply economy is not a binding constraint at heavy preset. Closes the long-expedition track. --- gogobee_long_expedition_plan.md | 8 +++----- internal/plugin/expedition_sim.go | 5 ++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gogobee_long_expedition_plan.md b/gogobee_long_expedition_plan.md index 19b3b4b..46ec216 100644 --- a/gogobee_long_expedition_plan.md +++ b/gogobee_long_expedition_plan.md @@ -143,11 +143,9 @@ Each successful background walk now logs a `walk` entry (`appendExpeditionLog(.. **D7-c (shipped 2026-05-27):** `cmd/expedition-sim` gained a `-days N` flag — when set, `RunExpedition` exits with `Outcome="day_capped"` after the Nth synthetic day rollover; 0 (default) is unbounded and only the existing `-cap` walk safety net applies. `SimResult` gained `DaySnapshots []SimDaySnapshot` ({Day, HPCurrent, HPMax, Supplies, Threat, Rooms}), captured at expedition start (Day 0), after every `applyAutoCamp`/`applyAutoCampBossSafety` Night-camp rollover, and one final end-of-run entry (reads `getExpedition(mostRecentExpeditionID(...))` when the row already extracted so closed runs still close their trajectory). `RunExpedition` signature picked up the `maxDays int` parameter; sole caller is the CLI. Coverage: `TestSimRunner_CaptureDaySnapshot_PopulatesFields` exercises the helper in isolation (HP from the live character row, SU/threat/day from the live expedition, Rooms from `res.Rooms`). Unblocks empirical D5-d retune of `phase5BDailyBurnRatePct` against per-day SU draws. -**Remaining work (D7-d+):** -- Re-run the class win-rate corpus (cross-link `project_class_balance`, `project_j2_sim_artifact`). -- Re-check trailers (bard/cleric per `project_j1_post_sweep_findings`) — autopilot camp pacing may relieve their HP-cliff issue. -- D5-d retune of `DailyBurn` / `phase5BDailyBurnRatePct` against measured day-counts. -- New balance memory entry once corpus stabilizes. +**D7-d (shipped 2026-05-27):** class corpus re-run + D5-d retune decision. First fixed a sim regression `expedition_sim.go` introduced by D5-b — bare `expedition start ` now returns the loadout prompt instead of outfitting, so the sim was halting before persisting any expedition; harness now passes the `heavy` preset. Corpus: `sim_results/d7d_corpus.jsonl` (n=100 × 10 classes × 5 zones × L10 = 5000 runs, `heavy` preset, `-cap 300`). Analysis: `sim_results/d7d_analyze.py`. Writeup: `sim_results/d7d_findings.md`. **Key reads:** (i) leaderboard mirrors [[project_j2_sim_artifact]] — martials 78–82%, casters 21–42%, ~40pp cluster gap unchanged by long-expedition mechanics; (ii) bard/cleric trailers **not** relieved by autopilot camp pacing — cleric actually regressed at L10 (21% vs J2b L12 39%) on spell-pool richness, J3-territory; (iii) T3 hits target 4-day duration (median 3), T4 hits 5–6 days (median 5), T5 hits 5 of 7 (only 21 clears); (iv) **D5-d retune: no change.** `phase5BDailyBurnRatePct=50` + per-tier `DailyBurn` stay as-is — heavy-preset cleared runs end with 78–98% SU remaining; supply economy is not a binding constraint and players lose to HP zero, not starvation. New memory entry: [[project_d7d_baseline]]. + +**Remaining work (D7-e+):** none scheduled; long-expedition mechanics are at v1. Future tuning rides on J3 caster picker widening (out of scope for the long-expedition track). ## 4. Cross-cutting risks diff --git a/internal/plugin/expedition_sim.go b/internal/plugin/expedition_sim.go index 56e3e3d..5372e4a 100644 --- a/internal/plugin/expedition_sim.go +++ b/internal/plugin/expedition_sim.go @@ -406,7 +406,10 @@ func (s *SimRunner) RunExpedition(uid id.UserID, zoneID ZoneID, walkCap, maxDays } ctx := MessageContext{Sender: uid} - if err := s.P.handleDnDExpeditionCmd(ctx, "start "+string(zoneID)); err != nil { + // D5-b made a bare "start " return the loadout prompt without + // outfitting. Force the tier-max "heavy" preset so multi-day runs + // have enough supplies to actually exercise [[project-sim-event-anchored-broken]] rollovers. + if err := s.P.handleDnDExpeditionCmd(ctx, "start "+string(zoneID)+" heavy"); err != nil { return res, fmt.Errorf("expedition start: %w", err) } exp, _ := getActiveExpedition(uid)