OPEN

Open Questions β€” Layered

Status: OPEN (seed document) Created: 2026-05-11 Wiki depot: /workcell/llm-wiki/wiki/architecture/ Repo: langgraph-game-surface


Layer 1: Pi β€” Hardware, Runtime, Agent Harnesses

The infrastructure layer. What the game runs ON.

Q-PI-01: LangGraph Compile Time on Pi 4

At what map size does LangGraph compile time become a practical blocker on Pi 4 hardware? 10x10 hex? 50x50? 100x100? - Source: [[langgraph-hex-node-mapping]] - Depends on: actual benchmarking

Q-PI-02: Bun→Python Subprocess Overhead

How much does invoking a Pi agent (Bun/JS) from within a LangGraph node (Python) cost per turn on a Pi 4 β€” subprocess spawn vs HTTP vs IPC? - Source: [[langgraph-tool-execution-tradeoffs]] - Depends on: benchmarking subprocess vs HTTP latency

Q-PI-03: Optimum Agent Harness Per Node Role

Which agent harness (Pi, Hermes, OpenCode, raw LangChain) is optimal for each node type (research, design, development, review) given Pi 4 constraints? Does the answer change per-unit vs per-node? - Source: [[langgraph-tool-execution-tradeoffs]] - Depends on: Q-PI-02, testing each harness on each node type

Q-PI-04: Docker Container Shape for Game Runtime

Does the game backend (LangGraph + renderer + agents) run in the existing d3-tui-pi-teams-proto container, a new container, or directly on the Pi host? What bind mounts, ports, and resource limits? - Source: [[langgraph-game-surface]] - Depends on: Q-PI-01, Q-PI-02

Q-PI-05: Checkpointer Backend on Pi

Which LangGraph checkpointer (MemorySaver, SqliteSaver, PostgresSaver) is appropriate for game state persistence on Pi 4? MemorySaver loses state on restart; SqliteSaver may have concurrency issues with multiple console clients. - Source: [[langgraph-game-surface]] - Depends on: concurrent access patterns

Q-PI-06: Multiple Console Clients β†’ Pi Concurrency

Can a single Pi 4 serve LangGraph state to three simultaneous console clients (RG40XXV + Wii + PS2)? What are the concurrency limits on checkpointer reads/writes? - Source: [[langgraph-game-surface]] - Depends on: Q-PI-05

Q-PI-07: Model Key Routing for Multi-Unit Sessions

When multiple units run simultaneously (harvesters + active units), how are API keys routed per-unit/per-model without collision? Can the existing secrets/model.env pattern handle per-unit model switching? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: Q-PI-03


Layer 2: Game β€” Assets, UX/UI, Engine

The player-facing layer. What the game IS.

Q-G-01: Turn Cycle Granularity

Is the turn cycle structure (Planning β†’ Execution β†’ Resolution β†’ End-of-Turn) the right granularity, or should moves be real-time-with-pause? What does the "feel" need to be? - Source: [[langgraph-gameplay-modes]] - Depends on: prototype feel testing

Q-G-02: Lane vs Unit Toggle Hierarchy

Should per-lane toggles override per-unit toggles, or the reverse? If a lane says auto-run but a unit says manual, who wins? Should hero units override lane toggles? - Source: [[langgraph-gameplay-modes]] - Depends on: UX design, gameplay balance

Q-G-03: AI Decision β€” LLM vs Heuristic

Do the AI decision nodes call an LLM for tactical reasoning, or run a deterministic heuristic? LLM gives adaptivity but costs latency and tokens. Heuristic is fast but predictable. What's the MVP choice? - Source: [[langgraph-gameplay-modes]] - Depends on: Q-PI-02 (latency budget)

Q-G-04: Renderer / Graph Separation

Does the rendering layer need its own terrain representation separate from the LangGraph state, or can it read directly from state keys? If hexes are nodes, does the renderer understand the graph topology? - Source: [[langgraph-hex-node-mapping]] - Depends on: Q-G-06 (renderer choice)

Q-G-05: Dynamic Node Generation for Procedural Maps

Are there LangGraph patterns for generating nodes at runtime (procedural maps), or must all nodes be defined at compile time? If so, does this limit map variety? - Source: [[langgraph-hex-node-mapping]] - Depends on: LangGraph API capabilities

Q-G-06: Rendering Engine Choice

Which rendering engine (pygame, Arcade, Pyglet, OpenRTS template, HTML5 Canvas for Wii, native for PS2) should be used for the first prototype? Is a unified renderer possible across all three console targets? - Source: [[langgraph-game-surface]] - Depends on: target console priority

Q-G-07: Console Priority Order

Which console first for the prototype β€” RG40XXV (easiest, native Python), Wii (HTML5 Canvas, novel), or PS2 (hardest, native C homebrew)? - Source: [[langgraph-game-surface]] - Depends on: MjF preference, available dev time

Q-G-08: Spectator Mode

Should the game surface support a read-only spectator mode (view auto-run without interaction)? Is this a separate LangGraph thread or a read-only state view? - Source: [[langgraph-gameplay-modes]] - Depends on: Q-G-01 (turn cycle design)

Q-G-09: Intel Suggestion UI During Node Activation

How does the rendering surface present intel suggestions (from harvesters) during node activation? Is it an interrupt() modal, a sidebar, or a notification queue? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: Q-G-06 (renderer capabilities)

Q-G-10: Output Locale Presentation

When a node produces output (wiki page, Forgejo issue), how does the player view it? In-game overlay? Browser launch? Terminal link? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: target console UX


Layer 3: Membrane β€” Wiring Between Pi and Game

The interoperability layer. What makes the two sides talk without breaking.

Q-M-01: Tool Visibility Boundary

Is the LangChain tool visibility trade-off real in practice for a game surface, or does the Hybrid pattern (LangGraph routes + agent decides + reports high-level outcomes) cover enough ground? - Source: [[langgraph-tool-execution-tradeoffs]] - Depends on: prototyping the Hybrid pattern

Q-M-02: Mid-Tool-Execution Interrupts

If the game surface needs interrupts mid-tool-execution (e.g., "scout found something β€” stop and let human decide"), does this force a move toward LangChain ToolNode (Pattern B), or can the external harness pattern be extended? - Source: [[langgraph-tool-execution-tradeoffs]] - Depends on: Q-M-01, gameplay needs

Q-M-03: Pi Agent Internal Event Streaming

Could Pi agents be configured to expose their internal tool calls as streamed events that LangGraph could optionally subscribe to, without making them mandatory state keys? Is this worth the complexity? - Source: [[langgraph-tool-execution-tradeoffs]] - Depends on: Q-M-01, Pi agent capabilities

Q-M-04: Access List Hierarchy

Should access lists be hierarchical? Unit-level default + node-level overrides that merge (additive) or replace (exclusive)? What's the least confusing model for the player? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: UX testing

Q-M-05: Forward Intel Flagging

Can a harvester flag intel for nodes that haven't been created yet? (Pre-positioned context for future work that hasn't been staged.) Does this require a different intel routing mechanism? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: graph topology design

Q-M-06: Cross-Unit Access Collisions

What happens when Unit A's access block conflicts with Unit B's access grant for the same node? Which unit's access policy wins? Or does each unit maintain its own view of the same node? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: access model design

Q-M-07: Intel Item Expiry / Staleness

Should intel items have an expiry or staleness mechanism? How does the system know when intel is outdated and should no longer be suggested? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: wiki maintenance patterns

Q-M-08: LangGraph Internal Limits

Would a hexagonal grid of 100+ nodes hit any internal LangGraph limits on graph size or edge count? What are the documented ceilings? - Source: [[langgraph-hex-node-mapping]] - Depends on: LangGraph docs / testing

Q-M-09: State Serialization With Complex Objects

When units carry complex configs, agent handles, or non-serializable objects, does the checkpointer handle them? What objects survive serialization and what breaks? - Source: [[langgraph-node-anatomy]] - Depends on: checkpointer backend choice (Q-PI-05)

Q-M-10: Game State vs Agent State Separation

Should the "game" state (positions, health, terrain) and the "agent" state (configs, access lists, intel items) share the same LangGraph state schema or be separated into subgraphs? Does separation help or hurt the membrane? - Source: [[langgraph-unit-node-interaction-model]] - Depends on: schema design, performance


Count

Next