diff --git a/.project/objectives/p0-26b-pick-research-rust-port.md b/.project/objectives/p0-26b-pick-research-rust-port.md index 05e956d7..c47b3ac2 100644 --- a/.project/objectives/p0-26b-pick-research-rust-port.md +++ b/.project/objectives/p0-26b-pick-research-rust-port.md @@ -1,16 +1,20 @@ --- id: p0-26b -title: "Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface)" +title: Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) priority: p1 -status: missing +status: partial scope: game1 -owner: warcouncil tags: [ai, rust, rail-1, tech-debt] -updated_at: 2026-05-27 -relates_to: [p0-26, p0-29, p1-29c] +owner: warcouncil +updated_at: 2026-06-06 +evidence: + - "src/simulator/crates/mc-ai/src/evaluator.rs:304 ScoringEvaluator::pick_tech reproduces per-pillar personality multipliers + p1-29 catch-up (bullet 1)" + - "src/simulator/api-gdext/src/ai.rs:713 GdAiController::pick_research(available_json, personality_axes_json, research_behind) surfaces chosen tech; all 3 live GDScript call sites route through src/game/engine/src/modules/management/turn_processor_helpers.gd:275 pick_research_via_bridge (bullet 2)" + - "src/game/engine/scenes/tests/auto_play.gd:1252, src/game/engine/src/entities/auto_play.gd:1219, src/game/engine/src/modules/management/turn_processor.gd:154 now delegate to bridge; _auto_pick_research deleted; both _pick_research bodies are pure dispatch wrappers (doc comment: 'no scoring logic lives here') — no inline scoring remains (bullet 3)" + - "src/simulator/crates/mc-ai/tests/pick_research_parity.rs: 5-clan parity 8/8 green; cargo test -p mc-ai = 268 lib + parity 8/8 + all sibling binaries pass, 0 failed. Re-verified 2026-06-06 on canonical HEAD d016d530a from EDIT host (pure-Rust crate, no Godot) (bullet 4)" + - ".local/batches/p0-26b-proof/turn_stats.jsonl: headless T120 seed=12345 run proves non-impersonated P1 (turn_processor path) advances 1->23 techs, tier_peak 1->2, zero bridge errors (bullet 2/3 proof — RUN-host artifact from 2026-06-03; regression-batch acceptance bullet still needs a fresh RUN-host T300 run before status can move partial->done)" blocked_by: [] --- - ## Context p0-26 ported the tactical AI (movement, production, combat, settle, promotion)