Files
Verbatim/graphify-out/GRAPH_REPORT.md
T
Emil 285688bcad feat: smaller cells (10x10px) for higher detail
Cells reduced from 16x16 to 10x10 pixels. Same window size now
shows more of the world — finer detail, more cells visible.
Adaptive viewport recalculates grid_w/grid_h from new cell size.

109 tests, 0 failures
2026-06-21 10:04:21 +03:00

15 KiB

Graph Report - . (2026-06-21)

Corpus Check

  • Corpus is ~33,231 words - fits in a single context window. You may not need a graph.

Summary

  • 690 nodes · 1218 edges · 47 communities (44 shown, 3 thin omitted)
  • Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 32 edges (avg confidence: 0.86)
  • Token cost: 0 input · 0 output

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. VulkanRenderer - 37 edges
  2. GraphicsRenderer - 31 edges
  3. GameSession - 26 edges
  4. Game - 24 edges
  5. Entity - 20 edges
  6. CellularAutomaton - 19 edges
  7. InputHandler - 18 edges
  8. Result - 17 edges
  9. String - 17 edges
  10. setup() - 17 edges

Surprising Connections (you probably didn't know these)

  • pipe render mode --semantically_similar_to--> AI pipe protocol (JSON stdin/stdout) [INFERRED] [semantically similar] AGENTS.md → PLAN.md
  • Game::fixed_update() --semantically_similar_to--> Fixed 60Hz timestep [INFERRED] [semantically similar] AGENTS.md → PLAN.md
  • Player --semantically_similar_to--> Player entity (headless dump) [INFERRED] [semantically similar] AGENTS.md → headless_dump.txt
  • rigid entity type --semantically_similar_to--> Rigid entities (AABB + slope stepping) [INFERRED] [semantically similar] AGENTS.md → PLAN.md
  • ragdoll entity type --semantically_similar_to--> Ragdoll corpses (Verlet) [INFERRED] [semantically similar] AGENTS.md → PLAN.md

Import Cycles

  • 1-file cycle: src/ai/action.rs -> src/ai/action.rs
  • 1-file cycle: src/world/grid.rs -> src/world/grid.rs
  • 1-file cycle: src/ai/protocol.rs -> src/ai/protocol.rs
  • 1-file cycle: src/ai/replay.rs -> src/ai/replay.rs
  • 1-file cycle: src/ai/scenario.rs -> src/ai/scenario.rs
  • 1-file cycle: src/ai/session.rs -> src/ai/session.rs
  • 1-file cycle: src/ai/state.rs -> src/ai/state.rs
  • 1-file cycle: src/game.rs -> src/game.rs
  • 1-file cycle: src/entity/player.rs -> src/entity/player.rs
  • 1-file cycle: src/render/terminal.rs -> src/render/terminal.rs
  • 1-file cycle: src/input.rs -> src/input.rs
  • 1-file cycle: src/main.rs -> src/main.rs
  • 1-file cycle: src/physics/collision.rs -> src/physics/collision.rs
  • 1-file cycle: src/physics/verlet.rs -> src/physics/verlet.rs
  • 1-file cycle: src/render/graphics.rs -> src/render/graphics.rs
  • 1-file cycle: src/render/vulkan.rs -> src/render/vulkan.rs
  • 1-file cycle: src/render/window_input.rs -> src/render/window_input.rs
  • 1-file cycle: src/world/cellular.rs -> src/world/cellular.rs
  • 1-file cycle: src/world/material.rs -> src/world/material.rs
  • 1-file cycle: tests/collision_robust.rs -> tests/collision_robust.rs

Hyperedges (group relationships)

  • Game loop fixed_update pipeline: CA step → rigid update → ragdoll update → damage — [INFERRED]
  • Three render modes read the same Grid + EntityManager (single source of truth) — [INFERRED]
  • GpuRenderer trait unifies VulkanRenderer + GraphicsRenderer behind run_gpu_mode() with identical event loops — [INFERRED]

Communities (47 total, 3 thin omitted)

Community 0 - "Vulkan Core Setup"

Cohesion: 0.10 Nodes (61): BufferUsageFlags, c_char, DescriptorPool, DescriptorSet, DescriptorSetLayout, Format, Image, MemoryPropertyFlags (+53 more)

Community 1 - "Terminal Renderer & Game Loop"

Cohesion: 0.07 Nodes (19): CellularAutomaton, Duration, InputHandler, Player, R, TerminalRenderer, Renderer, Game (+11 more)

Community 2 - "Graphics Vulkan Renderer"

Cohesion: 0.07 Nodes (31): ColorInstance, GraphicsRenderer, PushConstants, Arc, Buffer, CommandBuffer, CommandPool, Device (+23 more)

Community 3 - "AI Pipe Protocol"

Cohesion: 0.12 Nodes (31): Command, handle_command(), Response, run_pipe_protocol(), Assertion, AssertionResult, check_assertion(), format_results() (+23 more)

Community 4 - "AI Game Session"

Cohesion: 0.09 Nodes (13): GameSession, Default, ReplayRecorder, AiAction, CellInfo, EntityInfo, Game, GameState (+5 more)

Community 5 - "CLI Entry & GPU Mode"

Cohesion: 0.15 Nodes (20): Cli, dump_view(), GpuRenderer, main(), player_info(), Arc, EntityManager, Game (+12 more)

Community 6 - "AI State Export"

Cohesion: 0.13 Nodes (23): build_game_state(), CellInfo, entity_info(), entity_kind_name(), EntityInfo, GameState, material_from_name(), parse_entity_kind() (+15 more)

Community 7 - "Terminal Input Handler"

Cohesion: 0.13 Nodes (15): Event, JoinHandle, Receiver, Action, HeldKey, HeldState, InputHandler, MaterialBrush (+7 more)

Community 8 - "Entity System"

Cohesion: 0.15 Nodes (9): Constraint, Entity, EntityKind, EntityManager, EntityId, Option, Self, SubBody (+1 more)

Community 9 - "Cellular Automaton"

Cohesion: 0.29 Nodes (4): Grid, MaterialId, Self, CellularAutomaton

Community 10 - "Replay System"

Cohesion: 0.13 Nodes (11): ReplayEvent, ReplayPlayer, ReplayRecorder, ReplayRecording, ReplayEvent, AiAction, GameSession, Result (+3 more)

Community 11 - "Edge Case Tests"

Cohesion: 0.16 Nodes (17): center_camera_on_player(), clear_region_removes_all_materials(), entity_at_right_boundary(), entity_at_world_boundary_stays_in_bounds(), fill_rect_creates_correct_material_count(), find_material_locates_existing(), find_material_returns_none_for_absent(), goblin_has_correct_max_health() (+9 more)

Community 12 - "AI Actions & Grid"

Cohesion: 0.18 Nodes (7): AiAction, Cell, Game, MaterialId, Self, Vec, Grid

Community 13 - "Material Physics Tests"

Cohesion: 0.22 Nodes (17): bone_is_static(), dirt_is_solid(), fire_dies_over_time(), fire_ignites_flesh(), fire_ignites_grass(), fire_ignites_wood(), grass_is_solid(), lava_initial_temp_is_high() (+9 more)

Community 14 - "Player Controller"

Cohesion: 0.21 Nodes (6): Player, Entity, EntityId, EntityManager, Option, Self

Community 15 - "Cell & Material Types"

Cohesion: 0.17 Nodes (4): Self, Cell, MaterialId, rand_u8()

Community 16 - "Material Interaction Tests"

Cohesion: 0.26 Nodes (14): acid_dissolves_dirt(), acid_dissolves_grass(), acid_does_not_dissolve_empty(), fire_does_not_ignite_stone(), fire_does_not_ignite_water(), fire_spreads_through_wood_line(), lava_and_water_produce_both_steam_and_stone(), lava_cools_to_stone_eventually() (+6 more)

Community 17 - "Player Control Tests"

Cohesion: 0.26 Nodes (14): continuous_movement_does_not_fall_through_floor(), jump_goes_up_then_falls_back(), jump_while_airborne_does_nothing(), move_left_changes_x_position(), move_left_then_right_cancels(), move_right_changes_x_position(), player_health_stays_full_without_damage(), player_not_on_ground_while_jumping() (+6 more)

Community 18 - "AI Agent Roadmap"

Cohesion: 0.18 Nodes (14): AiAction, GameSession, pipe render mode, AI pipe protocol (JSON stdin/stdout), Seeded RNG determinism, LLM agent (Ollama/Llama/Qwen), Phase 7: AI Agent Integration, Phase 8: Web Arena & Training Pipeline (+6 more)

Community 19 - "Verlet Physics Solver"

Cohesion: 0.22 Nodes (5): Constraint, SubBody, VerletSolver, MaterialId, Self

Community 20 - "Render & Phase Roadmap"

Cohesion: 0.15 Nodes (11): Chunk system (64x64), Cross-platform support (Win/Linux/macOS), Multi-layer world architecture, Phase 2: World & Exploration, Phase 3: RPG Layer, Phase 4: Render Modes, Phase 4b: Graphics layers (lighting/particles/textures), Phase 5: Content & Polish (+3 more)

Community 21 - "Collision Robustness Tests"

Cohesion: 0.27 Nodes (10): entity_collision_with_dirt_wall(), player_blocked_by_ceiling(), player_blocked_by_left_wall(), player_blocked_by_right_wall(), player_blocked_by_two_walls_both_sides(), player_does_not_stick_to_wall(), player_slides_along_wall(), player_squeezes_through_gap() (+2 more)

Community 22 - "Render Mode & UI Roadmap"

Cohesion: 0.22 Nodes (11): EntityManager, Grid (250x250) source of truth, ascii render mode, graphics render mode, terminal render mode, ASCII renderer (Vulkan glyph atlas), Graphics renderer (Vulkan colored cells), Phase 1.5: UI Layer (+3 more)

Community 23 - "Window Input (winit)"

Cohesion: 0.20 Nodes (7): ElementState, HashSet, PhysicalKey, WindowInput, KeyCode, Option, Self

Community 24 - "Determinism Tests"

Cohesion: 0.22 Nodes (3): determinism_with_spawn_and_damage(), GameSession, setup()

Community 25 - "Ragdoll Death Tests"

Cohesion: 0.38 Nodes (9): corpse_exists_in_world(), damage_reduces_health_progressively(), death_transitions_rigid_to_ragdoll(), player_death_becomes_corpse(), ragdoll_bodies_stay_near_each_other(), ragdoll_falls_after_death(), GameSession, setup() (+1 more)

Community 26 - "Grid Collision Resolver"

Cohesion: 0.46 Nodes (6): apply_liquid_drag(), CollisionResult, resolve_grid_collision(), Grid, Self, SubBody

Community 27 - "Material Registry"

Cohesion: 0.43 Nodes (4): MaterialId, Self, Material, MaterialRegistry

Community 28 - "Entity Types & Game Loop"

Cohesion: 0.29 Nodes (7): cellular entity type, CellularAutomaton, Game::fixed_update(), rigid entity type, Fixed 60Hz timestep, 14 CA Materials, Rigid entities (AABB + slope stepping)

Community 29 - "Adaptive Viewport"

Cohesion: 0.33 Nodes (7): check_resize(), GpuRenderer trait, GraphicsRenderer, run_gpu_mode(), VulkanRenderer, WindowInput, Adaptive viewport

Community 30 - "Headless Dump & Combat Plan"

Cohesion: 0.33 Nodes (6): Player, vector movement convention, Goblin entity (headless dump), Grid ASCII rendering (headless dump), Player entity (headless dump), Phase 1: Combat & Interaction

Community 31 - "Entity Damage Tests"

Cohesion: 0.52 Nodes (6): entity_blocked_by_stone(), entity_dies_becomes_corpse(), entity_on_fire_takes_damage_over_time(), entity_takes_lava_damage(), GameSession, setup_empty()

Community 32 - "Entity Movement Tests"

Cohesion: 0.48 Nodes (5): player_blocked_by_stone_wall(), player_can_move_right(), player_survives_fall(), GameSession, setup_empty()

Community 33 - "Lava Physics Tests"

Cohesion: 0.52 Nodes (6): lava_flows_down(), lava_ignites_grass(), lava_ignites_wood(), lava_plus_water_makes_steam(), GameSession, setup_empty()

Community 34 - "Sand Physics Tests"

Cohesion: 0.52 Nodes (6): GameSession, sand_displaces_water(), sand_does_not_fall_through_stone(), sand_falls_down(), sand_piles_on_stone(), setup_empty()

Community 35 - "Acid Physics Tests"

Cohesion: 0.60 Nodes (5): acid_dissolves_wood(), acid_does_not_dissolve_stone(), acid_flows_down(), GameSession, setup_empty()

Community 36 - "Water Physics Tests"

Cohesion: 0.60 Nodes (5): GameSession, setup_empty(), water_does_not_pass_through_stone_wall(), water_flows_down(), water_spreads_sideways()

Community 37 - "Ragdoll Physics Plan"

Cohesion: 0.50 Nodes (5): Constraint, ragdoll entity type, SubBody, VerletSolver, Ragdoll corpses (Verlet)

Community 39 - "Per-Cell Color Plan"

Cohesion: 0.67 Nodes (4): Cell struct, inline cell colors convention, MaterialRegistry, Per-cell color (reality layer)

Knowledge Gaps

  • 106 isolated node(s): String, CellInfo, Vec, EntityInfo, ScenarioResult (+101 more) These have ≤1 connection - possible missing edges or undocumented components.
  • 3 thin communities (<3 nodes) omitted from report — run graphify query to explore isolated nodes.

Suggested Questions

Questions this graph is uniquely positioned to answer:

  • Why does Cell connect AI Actions & Grid to Cellular Automaton? High betweenness centrality (0.011) - this node is a cross-community bridge.
  • Why does GameSession connect AI Game Session to AI State Export? High betweenness centrality (0.011) - this node is a cross-community bridge.
  • What connects String, CellInfo, Vec to the rest of the system? 108 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should Vulkan Core Setup be split into smaller, more focused modules? Cohesion score 0.09525899912203688 - nodes in this community are weakly interconnected.
  • Should Terminal Renderer & Game Loop be split into smaller, more focused modules? Cohesion score 0.06956521739130435 - nodes in this community are weakly interconnected.
  • Should Graphics Vulkan Renderer be split into smaller, more focused modules? Cohesion score 0.06543385490753911 - nodes in this community are weakly interconnected.
  • Should AI Pipe Protocol be split into smaller, more focused modules? Cohesion score 0.12063492063492064 - nodes in this community are weakly interconnected.