refactor(engine): first ambiguity burn-down batch — 302 → 198 pairs
Test / test (pull_request) Failing after 15m16s
Test / test (pull_request) Failing after 15m16s
Two structural fixes from the #143 backlog: - Game-state ordering spine: the three pre-mutation GameStateResource writers (tick_elapsed_time, sync_settings_to_game, handle_restore_prompt) are now a deterministic chain before GameMutation, and the remaining unordered readers (update_selection_hud, handle_hint_button, tick_hint_highlight, handle_right_click, snap_cards_on_window_resize, sync_pile_marker_visibility, auto_save_game_state) are ordered after it. Readers now see the current frame's moves deterministically instead of racing the mutators. - NewGameRequestWriters set: every in-cluster writer of NewGameRequestEvent (buttons, modals, mode picker, seed poller, restore prompt) is registered in a shared set marked ambiguous with itself — writer-vs-writer append order is meaningless since consumers drain the whole queue. Out-of-cluster writers (home, challenge, time-attack, win-summary, play-by-seed, difficulty, stats plugins) can join the set when the test cluster grows. AMBIGUITY_BASELINE ratchets 302 → 198. Remaining backlog is dominated by the Sprite (72) / Transform (48) visual-domain cluster, which needs per-domain set architecture — next batch. Refs #143 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ use solitaire_core::{FOUNDATIONS, TABLEAUS};
|
||||
use solitaire_core::Suit;
|
||||
|
||||
use crate::events::{HintVisualEvent, StateChangedEvent};
|
||||
use crate::game_plugin::GameMutation;
|
||||
use crate::hud_plugin::HudVisibility;
|
||||
use crate::layout::{
|
||||
Layout, LayoutResource, LayoutSystem, TABLE_COLOUR, apply_dynamic_tableau_fan, compute_layout,
|
||||
@@ -103,7 +104,7 @@ impl Plugin for TablePlugin {
|
||||
apply_theme_on_settings_change,
|
||||
apply_hint_pile_highlight,
|
||||
tick_hint_pile_highlights,
|
||||
sync_pile_marker_visibility,
|
||||
sync_pile_marker_visibility.after(GameMutation),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user