Files
NowChessSystems/graphify-out/GRAPH_REPORT.md
T
Janis 6da4234a38
Build & Test (NowChessSystems) TeamCity build finished
feat: add initial project structure and documentation files
2026-04-12 16:35:45 +02:00

14 KiB

Graph Report - . (2026-04-12)

Corpus Check

  • 78 files · ~273,497 words
  • Verdict: corpus is large enough that graph structure adds value.

Summary

  • 480 nodes · 549 edges · 74 communities detected
  • Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
  • Token cost: 0 input · 0 output

God Nodes (most connected - your core abstractions)

  1. DefaultRules - 35 edges
  2. GameEngine - 29 edges
  3. ChessBoardView - 17 edges
  4. FenParserFastParse - 17 edges
  5. FenParserCombinators - 16 edges
  6. PgnParser - 14 edges
  7. FenParser - 9 edges
  8. CommandInvoker - 9 edges
  9. GameContext - 8 edges
  10. FenExporter - 7 edges

Surprising Connections (you probably didn't know these)

  • None detected - all connections are within the same source files.

Communities

Community 0 - "Community 0"

Cohesion: 0.11 Nodes (2): CastlingMove, DefaultRules

Community 1 - "Community 1"

Cohesion: 0.09 Nodes (17): ClassGap, _compact_ranges(), _find_scoverage_xml(), format_agent(), format_json(), format_markdown(), format_module_gaps(), main() (+9 more)

Community 2 - "Community 2"

Cohesion: 0.11 Nodes (2): GameEngine, PendingPromotion

Community 3 - "Community 3"

Cohesion: 0.09 Nodes (4): FenParserCombinators, EmptyToken, FenParserSupport, PieceToken

Community 4 - "Community 4"

Cohesion: 0.14 Nodes (9): format_module(), load_module(), main(), ModuleResult, parse_suite_xml(), run(), SuiteResult, TestCase (+1 more)

Community 5 - "Community 5"

Cohesion: 0.2 Nodes (1): ChessBoardView

Community 6 - "Community 6"

Cohesion: 0.15 Nodes (1): FenParserFastParse

Community 7 - "Community 7"

Cohesion: 0.12 Nodes (7): InvalidFormat, InvalidMove, MoveCommand, MoveResult, QuitCommand, ResetCommand, Successful

Community 8 - "Community 8"

Cohesion: 0.12 Nodes (12): BoardResetEvent, CheckDetectedEvent, CheckmateEvent, DrawClaimedEvent, FiftyMoveRuleAvailableEvent, InvalidMoveEvent, MoveExecutedEvent, MoveRedoneEvent (+4 more)

Community 9 - "Community 9"

Cohesion: 0.26 Nodes (2): PgnGame, PgnParser

Community 10 - "Community 10"

Cohesion: 0.15 Nodes (3): candidateMoves(), GameEngineIntegrationTest, legalMoves()

Community 11 - "Community 11"

Cohesion: 0.14 Nodes (1): GameEnginePromotionTest

Community 12 - "Community 12"

Cohesion: 0.15 Nodes (2): EngineTestHelpers, MockObserver

Community 13 - "Community 13"

Cohesion: 0.17 Nodes (3): CommandInvokerBranchTest, ConditionalFailCommand, FailingCommand

Community 14 - "Community 14"

Cohesion: 0.36 Nodes (1): FenParser

Community 15 - "Community 15"

Cohesion: 0.22 Nodes (1): CommandInvoker

Community 16 - "Community 16"

Cohesion: 0.31 Nodes (5): applyMove(), Board, removed(), updated(), withMove()

Community 17 - "Community 17"

Cohesion: 0.22 Nodes (1): GameContext

Community 18 - "Community 18"

Cohesion: 0.25 Nodes (6): ApiError, ApiResponse, Failure, PagedResponse, Pagination, Success

Community 19 - "Community 19"

Cohesion: 0.43 Nodes (1): FenExporter

Community 20 - "Community 20"

Cohesion: 0.29 Nodes (1): CastlingRights

Community 21 - "Community 21"

Cohesion: 0.4 Nodes (2): ChessGUIApp, ChessGUILauncher

Community 22 - "Community 22"

Cohesion: 0.5 Nodes (2): offset(), Square

Community 23 - "Community 23"

Cohesion: 0.4 Nodes (2): PlayerId, PlayerInfo

Community 24 - "Community 24"

Cohesion: 0.5 Nodes (2): PieceSprites, SquareColors

Community 25 - "Community 25"

Cohesion: 0.6 Nodes (1): TerminalUI

Community 26 - "Community 26"

Cohesion: 0.6 Nodes (1): PgnExporter

Community 27 - "Community 27"

Cohesion: 0.67 Nodes (1): GUIObserver

Community 28 - "Community 28"

Cohesion: 0.5 Nodes (1): DefaultRulesStateTransitionsTest

Community 29 - "Community 29"

Cohesion: 0.5 Nodes (2): EndingMockObserver, GameEngineGameEndingTest

Community 30 - "Community 30"

Cohesion: 0.5 Nodes (2): GameEngineLoadGameTest, MockObserver

Community 31 - "Community 31"

Cohesion: 0.5 Nodes (1): CommandInvokerTest

Community 32 - "Community 32"

Cohesion: 0.67 Nodes (1): Parser

Community 33 - "Community 33"

Cohesion: 0.67 Nodes (0):

Community 34 - "Community 34"

Cohesion: 0.67 Nodes (1): Main

Community 35 - "Community 35"

Cohesion: 0.67 Nodes (1): Renderer

Community 36 - "Community 36"

Cohesion: 0.67 Nodes (1): PgnExporterTest

Community 37 - "Community 37"

Cohesion: 0.67 Nodes (1): FenExporterTest

Community 38 - "Community 38"

Cohesion: 0.67 Nodes (1): GameEngineNotationTest

Community 39 - "Community 39"

Cohesion: 0.67 Nodes (1): MoveCommandTest

Community 40 - "Community 40"

Cohesion: 1.0 Nodes (1): PieceTest

Community 41 - "Community 41"

Cohesion: 1.0 Nodes (1): PieceTypeTest

Community 42 - "Community 42"

Cohesion: 1.0 Nodes (1): SquareTest

Community 43 - "Community 43"

Cohesion: 1.0 Nodes (1): CastlingRightsTest

Community 44 - "Community 44"

Cohesion: 1.0 Nodes (1): BoardTest

Community 45 - "Community 45"

Cohesion: 1.0 Nodes (1): ColorTest

Community 46 - "Community 46"

Cohesion: 1.0 Nodes (1): MoveTest

Community 47 - "Community 47"

Cohesion: 1.0 Nodes (1): GameContextTest

Community 48 - "Community 48"

Cohesion: 1.0 Nodes (1): ApiResponseTest

Community 49 - "Community 49"

Cohesion: 1.0 Nodes (1): PlayerInfoTest

Community 50 - "Community 50"

Cohesion: 1.0 Nodes (0):

Community 51 - "Community 51"

Cohesion: 1.0 Nodes (1): Piece

Community 52 - "Community 52"

Cohesion: 1.0 Nodes (1): Move

Community 53 - "Community 53"

Cohesion: 1.0 Nodes (1): RendererAndUnicodeTest

Community 54 - "Community 54"

Cohesion: 1.0 Nodes (0):

Community 55 - "Community 55"

Cohesion: 1.0 Nodes (1): DefaultRulesTest

Community 56 - "Community 56"

Cohesion: 1.0 Nodes (1): PgnParserTest

Community 57 - "Community 57"

Cohesion: 1.0 Nodes (1): PgnValidatorTest

Community 58 - "Community 58"

Cohesion: 1.0 Nodes (1): FenParserCombinatorsTest

Community 59 - "Community 59"

Cohesion: 1.0 Nodes (1): FenParserTest

Community 60 - "Community 60"

Cohesion: 1.0 Nodes (1): FenParserFastParseTest

Community 61 - "Community 61"

Cohesion: 1.0 Nodes (1): ParserTest

Community 62 - "Community 62"

Cohesion: 1.0 Nodes (1): GameEngineOutcomesTest

Community 63 - "Community 63"

Cohesion: 1.0 Nodes (1): GameEngineSpecialMovesTest

Community 64 - "Community 64"

Cohesion: 1.0 Nodes (1): GameEngineScenarioTest

Community 65 - "Community 65"

Cohesion: 1.0 Nodes (1): CommandTest

Community 66 - "Community 66"

Cohesion: 1.0 Nodes (0):

Community 67 - "Community 67"

Cohesion: 1.0 Nodes (0):

Community 68 - "Community 68"

Cohesion: 1.0 Nodes (0):

Community 69 - "Community 69"

Cohesion: 1.0 Nodes (0):

Community 70 - "Community 70"

Cohesion: 1.0 Nodes (0):

Community 71 - "Community 71"

Cohesion: 1.0 Nodes (1): Strip the package prefix from the full method path.

Community 72 - "Community 72"

Cohesion: 1.0 Nodes (1): Lines that are branch points and have at least one uncovered branch statement.

Community 73 - "Community 73"

Cohesion: 1.0 Nodes (0):

Knowledge Gaps

  • 55 isolated node(s): PieceTest, PieceTypeTest, SquareTest, CastlingRightsTest, BoardTest (+50 more) These have ≤1 connection - possible missing edges or undocumented components.
  • Thin community Community 40 (2 nodes): PieceTest.scala, PieceTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 41 (2 nodes): PieceTypeTest.scala, PieceTypeTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 42 (2 nodes): SquareTest.scala, SquareTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 43 (2 nodes): CastlingRightsTest.scala, CastlingRightsTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 44 (2 nodes): BoardTest.scala, BoardTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 45 (2 nodes): ColorTest.scala, ColorTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 46 (2 nodes): MoveTest.scala, MoveTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 47 (2 nodes): GameContextTest.scala, GameContextTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 48 (2 nodes): ApiResponseTest.scala, ApiResponseTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 49 (2 nodes): PlayerInfoTest.scala, PlayerInfoTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 50 (2 nodes): PieceType.scala, label() Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 51 (2 nodes): Piece.scala, Piece Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 52 (2 nodes): Move.scala, Move Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 53 (2 nodes): RendererAndUnicodeTest.scala, RendererAndUnicodeTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 54 (2 nodes): PieceUnicode.scala, unicode() Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 55 (2 nodes): DefaultRulesTest.scala, DefaultRulesTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 56 (2 nodes): PgnParserTest.scala, PgnParserTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 57 (2 nodes): PgnValidatorTest.scala, PgnValidatorTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 58 (2 nodes): FenParserCombinatorsTest.scala, FenParserCombinatorsTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 59 (2 nodes): FenParserTest.scala, FenParserTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 60 (2 nodes): FenParserFastParseTest.scala, FenParserFastParseTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 61 (2 nodes): ParserTest.scala, ParserTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 62 (2 nodes): GameEngineOutcomesTest.scala, GameEngineOutcomesTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 63 (2 nodes): GameEngineSpecialMovesTest.scala, GameEngineSpecialMovesTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 64 (2 nodes): GameEngineScenarioTest.scala, GameEngineScenarioTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 65 (2 nodes): CommandTest.scala, CommandTest Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 66 (1 nodes): build.gradle.kts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 67 (1 nodes): settings.gradle.kts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 68 (1 nodes): RuleSet.scala Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 69 (1 nodes): GameContextImport.scala Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 70 (1 nodes): GameContextExport.scala Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 71 (1 nodes): Strip the package prefix from the full method path. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 72 (1 nodes): Lines that are branch points and have at least one uncovered branch statement. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 73 (1 nodes): test_counter.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.

Suggested Questions

Questions this graph is uniquely positioned to answer:

  • Why does FenParserFastParse connect Community 6 to Community 3? High betweenness centrality (0.004) - this node is a cross-community bridge.
  • What connects PieceTest, PieceTypeTest, SquareTest to the rest of the system? 55 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should Community 0 be split into smaller, more focused modules? Cohesion score 0.11 - nodes in this community are weakly interconnected.
  • Should Community 1 be split into smaller, more focused modules? Cohesion score 0.09 - nodes in this community are weakly interconnected.
  • Should Community 2 be split into smaller, more focused modules? Cohesion score 0.11 - nodes in this community are weakly interconnected.
  • Should Community 3 be split into smaller, more focused modules? Cohesion score 0.09 - nodes in this community are weakly interconnected.
  • Should Community 4 be split into smaller, more focused modules? Cohesion score 0.14 - nodes in this community are weakly interconnected.