← Back to Runs
Run Detail
640481b3-ec5e-42f3-9353-bef22f41ebce
Started18/06/2026, 02:42:06
Git SHA38c4f1b0
Statedirty
Avg Error %0.32%
BH Sig Count1
Total Cases12
Passing11
Run Report—
Code Changes Since Previous Run
Index: simulator/config/hero_definitions/Mia.json===================================================================--- simulator/config/hero_definitions/Mia.json prev run+++ simulator/config/hero_definitions/Mia.json this run@@ -29,9 +29,10 @@"applies_to": "target"},"duration": {"type": "turn",- "value": 1+ "value": 1,+ "delay": 1},"same_effect_stacking": "max"}}
Show Raw Dirty State Patch (vs Clean Baseline)
diff --git a/shared/fighters_data/fighters_stats.json b/shared/fighters_data/fighters_stats.json--- a/shared/fighters_data/fighters_stats.json+++ b/shared/fighters_data/fighters_stats.json@@ -4,6 +4,11 @@"lanc": [1400.98, 1432.28, 1756.8, 1722.5],"mark": [1400.98, 1431.28, 1806.4, 1785.4]},+ "custom": {+ "inf": [1370.6, 1380.5, 1706.7, 1864.7],+ "lanc": [1370.6, 1380.5, 1820.4, 1669.3],+ "mark": [1370.6, 1380.5, 1910.9, 1732.9]+ },"daut": {"inf": [9.94,diff --git a/simulator/config/hero_definitions/Mia.json b/simulator/config/hero_definitions/Mia.json--- a/simulator/config/hero_definitions/Mia.json+++ b/simulator/config/hero_definitions/Mia.json@@ -30,7 +30,8 @@},"duration": {"type": "turn",- "value": 1+ "value": 1,+ "delay": 1},"same_effect_stacking": "max"}diff --git a/simulator/src/testcases.test.ts b/simulator/src/testcases.test.ts--- a/simulator/src/testcases.test.ts+++ b/simulator/src/testcases.test.ts@@ -237,13 +237,13 @@assert.equal(summary?.gameStatAdjustment?.unadjusted.bias_raw, -2);});-test("runTestcases skips stat rounding correction for stochastic misses", () => {+test("runTestcases applies stat rounding correction for stochastic misses", () => {const config = loadSimulatorConfig();const report = runTestcases({ matching: "greg_mia_combo", repeat: 5, calibrationReportPath: "/tmp/does-not-exist.json" }, config);const summaries = Object.values(report.testcases);assert.ok(summaries.some((summary) => summary.deterministic === false && summary.game?.passes === false));- assert.deepEqual(summaries.map((summary) => summary.gameStatAdjustment), summaries.map(() => undefined));+ assert.ok(summaries.some((summary) => summary.deterministic === false && summary.gameStatAdjustment));});test("runTestcases default round cap lets long no-hero baselines reach battle end", () => {diff --git a/simulator/src/testcases.ts b/simulator/src/testcases.ts--- a/simulator/src/testcases.ts+++ b/simulator/src/testcases.ts@@ -435,8 +435,11 @@deterministic: boolean;thresholds?: Record<string, number>;}): InternalStatAdjustment | undefined {- if (!options.deterministic || options.game.bias_raw === 0) return undefined;+ const shouldCorrect = options.deterministic ? options.game.bias_raw !== 0 : !options.game.passes;+ if (!shouldCorrect || options.game.bias_raw === 0) return undefined;const direction = -Math.sign(options.game.bias_raw);+ if (!options.deterministic) return findStochasticGameStatAdjustment(options, direction);+const maxCandidate = evaluateStatAdjustment(options, direction * STAT_ROUNDING_MAX_ADJUSTMENT);let best = maxCandidate;if (maxCandidate.mode === "deterministic_exact") return maxCandidate;@@ -465,6 +468,33 @@return best;}+function findStochasticGameStatAdjustment(options: {+ game: ParityComparisonMetrics;+ input: BattleInput;+ config: SimulatorConfig;+ job: TestcaseExecutionJob;+ reference: { n: number; mu: number; sigma: number };+ initialTroops: number;+ deterministic: boolean;+ thresholds?: Record<string, number>;+}, direction: number): InternalStatAdjustment | undefined {+ let best: InternalStatAdjustment | undefined;+ for (const value of statAdjustmentCandidates(direction)) {+ const candidate = evaluateStatAdjustment(options, value);+ if (!best || correctionScore(candidate.adjusted, options.deterministic) < correctionScore(best.adjusted, options.deterministic)) best = candidate;+ }+ if (best?.adjusted.passes) return { ...best, mode: "stochastic_tolerance" };+ return best;+}++function statAdjustmentCandidates(direction: number): number[] {+ const values: number[] = [];+ for (let step = STAT_ROUNDING_SCAN_STEPS; step >= 1; step -= 1) {+ values.push(roundStatAdjustment(direction * (STAT_ROUNDING_MAX_ADJUSTMENT * step) / STAT_ROUNDING_SCAN_STEPS));+ }+ return values;+}+function evaluateStatAdjustment(options: {game: ParityComparisonMetrics;input: BattleInput;
Accuracy Results
12 / 12
| File | Case | # | Adj | S n | G n | S μ | G μ | Bias% | t | q | P | W |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| testcases/emulator_verified/greg_mia_combo.json | greg_mia_combo | 0 | — | 100 | 4 | 2434.4 | 2508.3 | -1.58% | -1.36 | 0.58 | P | — |
| testcases/emulator_verified/greg_mia_combo.json | greg_mia_combo | 1 | -0.05% | 100 | 5 | 3485.0 | 3432.8 | 1.12% | 5.92 | 0.0 | F | — |
| testcases/emulator_verified/greg_mia_defender_current.json | greg_mia_defender_current | 0 | — | 100 | 18 | 3351.7 | 3351.6 | 0.00% | 0.02 | 0.98 | P | — |
| testcases/emulator_verified/greg_mia_nohero_control_current.json | greg_mia_nohero_control_current | 0 | — | 1 | 3 | 3752.0 | 3752.0 | 0.00% | P | — | ||
| testcases/emulator_verified/greg_mia_nohero_control_current.json | greg_mia_nohero_control_current | 1 | +0.05% | 1 | 3 | 3652.0 | 3652.0 | 0.00% | P | — | ||
| testcases/emulator_verified/mia_only_defender_current.json | mia_only_defender_current | 0 | — | 100 | 10 | 3544.6 | 3543.9 | 0.01% | 0.13 | 0.98 | P | — |
| testcases/emulator_verified/mia_only_defender_current.json | mia_only_defender_current | 1 | — | 100 | 20 | 3443.3 | 3449.2 | -0.13% | -1.56 | 0.58 | P | — |
| testcases/emulator_verified/mia_solo.json | mia_solo | 0 | — | 100 | 1 | -266.2 | -260.0 | -0.18% | -0.63 | 0.80 | P | — |
| testcases/emulator_verified/mia_solo.json | mia_solo | 1 | — | 100 | 1 | 1299.1 | 1293.0 | 0.27% | 0.72 | 0.80 | P | — |
| testcases/emulator_verified/mia_solo.json | mia_solo | 2 | — | 100 | 1 | -182.5 | -180.0 | -0.16% | -0.59 | 0.80 | P | — |
| testcases/emulator_verified/mia_solo.json | mia_solo | 3 | — | 100 | 1 | 880.2 | 879.0 | 0.09% | 0.30 | 0.96 | P | — |
| testcases/emulator_verified/mia_solo.json | mia_solo | 4 | — | 100 | 1 | 970.6 | 967.0 | 0.26% | 0.78 | 0.80 | P | — |