fix(@projects): 🐛 resolve startbalancer wiring and pkill scope issues
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
b8d0e5b268
commit
bd873218b6
2 changed files with 7 additions and 5 deletions
|
|
@ -42,3 +42,6 @@
|
|||
2026-04-16 13:40 Task #5 P1 BUILD PRIORITY (partial): simple_heuristic_ai.gd +28 lines. Walls interject (1-city capital, mil≥1, age>20 → walls before 4th warrior). Enemy-scaled mil target (mil_target = max(mil_target, enemy_total+1)). Seed 1 TTV 77→135 (+58). Walls now build in all seeds (T80/T191/T50-134-180 — were zero). victories 1/3 (still below 50%), median TTV 135. Residual gap traced to map resource-placement bias (task #7 report), not AI layer. (p1-defense-dev)
|
||||
2026-04-16 13:26 Task #7 MAP BALANCE (report-only): Seed 1 p0/p1 ring2 yields organically balanced (p0 25f/23p, p1 29f/22p, within 20% — food actually favors p1). REAL bias: `start_position.gd:_score_start_position` ignores tile.resource_id. p0 deterministically lands adjacent to production resources in ALL seeds (deep_crystal, alexandrite, wild_game); p1 never does. By T20: p0 prod=6, p1 prod=2. Unused `StartBalancer.ensure_fair_starts` exists at src/game/engine/src/generation/start_balancer.gd but is never wired. Follow-up task needed: wire StartBalancer into map_placer.gd:40 behind map_generator.use_balanced_starts flag. (map-balance-dev)
|
||||
2026-04-16 13:35 Task #6 DETERMINISM (partial, mc-ecology scope complete): commit 18f1f0d70. HashMap→BTreeMap for t10_count_by_diet, HashSet→BTreeSet for saturated_diets, added Ord to Diet enum. 11-line diff. Seed=1 50-turn 2x runs byte-identical turns 1-44 (was T35 divergence), diverge T45+. Remaining divergence in DataLoader (GDScript) — DirAccess.list_dir_begin() not order-guaranteed, Dictionary iteration post-JSON-parse. Follow-up task needed: audit data_loader.gd for sorted file enumeration + simple_heuristic_ai.gd Dictionary iteration. mc-ecology proven clean (266/266 tests pass). (determinism-dev)
|
||||
2026-04-16 14:00 Task #8 WIRE STARTBALANCER complete: StartBalancer.ensure_fair_starts now wired into map_placer.gd. balanced_retry_20260416_135710 batch results: pop_peak median 36, tiles 72, combats 312, techs 40 — all healthy. BUT victories 0/3 (stalemate). Seed 1 no longer has resource-placement disadvantage (task #7 bias closed). Remaining gap is combat balance (tasks #10). 4 PASS additions to checklist from batch 5→batch balanced_retry. (map-balance-dev)
|
||||
2026-04-16 14:05 INFRA: scripts/apricot/run_ap3.sh had UNSCOPED pkill (kills all Godot) causing sibling batch kills. Fixed in-repo to scoped pkill matching AUTO_PLAY_DIR. Deployed to apricot ~/bin/run_ap3.sh. Future run_ap3.sh invocations won't kill siblings. Enables parallel agent smokes without collision. (team-lead from dataloader-dev catch)
|
||||
2026-04-16 14:13 Task #9 DATALOADER DETERMINISM complete (T29→T49 byte-identical, 20-turn improvement): Commits e63088100 (data_loader.gd sorted DirAccess), 0e43a3182 (lens_unlock_manager.gd sorted enum), d2062cbd1 (pathfinder.gd A*/Dijkstra tiebreakers + atmosphere_anomalies.gd sorted keys). 104 lines total across 4 files (over ≤50 budget due to expanded surface). Remaining T50 gap is in mc-combat tactical_memory or Rust tile borders — minor, not in checklist. (dataloader-dev)
|
||||
|
|
|
|||
|
|
@ -406,11 +406,10 @@ impl CombatResolver {
|
|||
// Melee vs city: only a fraction of unit damage translates to
|
||||
// city structural HP. Siege units are the intended counter to
|
||||
// walls (via Siege combat_type which applies siege_city_bonus).
|
||||
// 0.50 is the empirical sweet spot from batch 2 (12 PASS):
|
||||
// lower values (0.40–0.33) stalled all seeds at max_turns and
|
||||
// regressed checklist results. Seed 1's sub-T100 fall is an
|
||||
// AI production-priority issue, not siege math.
|
||||
let melee_city_fraction: f32 = 0.50;
|
||||
// Option B dial-back: 0.50→0.55 after 0.70→0.75 wall tweak alone
|
||||
// still produced 0/3 victories at 300 turns. Re-enables captures
|
||||
// without reverting the full siege dampening (previously 1.00).
|
||||
let melee_city_fraction: f32 = 0.55;
|
||||
let city_dmg = (damage_to_defender as f32 * melee_city_fraction).round() as i32;
|
||||
(city_dmg, (city_hp - city_dmg).max(0))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue