docs(team-leads): 📝 Add WireGuard team lead documentation to clarify roles and workflows in .project/team-leads/wireguard.md

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-04-17 21:59:26 -07:00
parent fce070facf
commit 8daad68bf5

View file

@ -1,13 +1,52 @@
# wireguard — Input & UI Wiring Lead
---
id: wireguard
name: Wireguard
specialization: World-map interactivity and input pipeline — unit selection, movement UX, HUD panel wiring, keyboard shortcuts (ESC/F10/M/etc.), menu stack ordering, tutorial overlay correctness, CanvasLayer hierarchy, EventBus input signals.
objectives:
- p0-33
- p0-35
- p1-18
- p1-19
---
**Focus**: World-map interactivity, unit selection/movement UX, input pipeline, panel wiring, keyboard shortcuts, ESC/F10/menu stack, tutorial overlay correctness.
## Mandate
**Scope**: GDScript input handling, HUD panels, CanvasLayer ordering, EventBus input signals, unit action panels, movement mode state machine, path preview rendering.
**Make the world-map feel right to click.** The Wireguard owns the thin layer
where player intent meets the simulation: every mouse click, every key press,
every panel that pops open or closes, the path preview under the cursor, the
disabled tooltip that explains why a button can't fire right now.
**Not in scope**: Simulation logic (Rust), combat resolution, economy systems, art/sprite generation.
If the player presses ESC and nothing closes, or clicks a unit and sees no
feedback, or enters movement mode and can't tell where the unit will end up —
that's a Wireguard bug. If the tutorial auto-interrupts a returning player,
or the dim overlay eats a click it shouldn't — that's a Wireguard bug.
## Active Objectives
## Scope
| ID | Title | Status |
|----|-------|--------|
| [p0-33](../objectives/p0-33-world-map-input-and-panel-wiring.md) | World-map input and panel wiring | 🟡 partial |
- GDScript input handlers (`_unhandled_input`, `_unhandled_key_input`, `_handle_hotkeys`)
- HUD panels: `world_map_hud.gd`, `unit_panel.tscn`/`.gd`, `city_screen.gd` ESC behavior, tutorial overlay
- CanvasLayer ordering and `mouse_filter` configuration
- EventBus input signals: `unit_selected`, `unit_deselected`, `movement_mode_entered`, `movement_mode_exited`, `ingame_menu_requested`, `tutorial_requested`
- Path preview rendering in `unit_renderer.gd` (the UI half — pathfinding itself lives in `PathfinderScript` and is out of scope)
- Vocabulary keys for action button labels and tooltips
## Not in scope
- Simulation logic (Rust crates) — `shipwright` or relevant domain specialist
- Combat resolution and keyword effects — `combat-dev`
- AI decision-making — `warcouncil`
- Pathfinding algorithm itself — lives in `src/game/engine/src/map/pathfinder.gd`; Wireguard consumes it
- Art / sprite generation — `asset-sprite`
- Audio cues — `asset-audio`
## Directly owned objectives
- **p0-33** world-map input wiring — unit panel instancing, city single-click, ESC/F10 menu, panel close, tutorial mouse_filter fix
- **p0-35** movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing, disabled-state tooltips
- **p1-18** village discovery feedback — notification toast, reward popup, minimap ping (UI half of the existing `EventBus.village_discovered` signal)
- **p1-19** tutorial opt-in — HUD button, disappears after turn 5, Step 1 start
## Escalation
- Signal-schema changes in `EventBus` that touch simulation code → coordinate with `shipwright` before merging.
- If a Wireguard objective needs a new data field on `Unit`/`City`/`Player` → request it from the owning domain specialist, do not patch the entity from Wireguard.