Skip to content

945 reconstruct and verify architecture - #994

Open
koschke wants to merge 249 commits into
masterfrom
945-reconstruct-and-verify-architecture
Open

945 reconstruct and verify architecture#994
koschke wants to merge 249 commits into
masterfrom
945-reconstruct-and-verify-architecture

Conversation

@koschke

@koschke koschke commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Reconstruct and verify the SEE architecture with Axivion (#945)

Summary

Reorganized classes and namespaces into smaller, more cohesive ones.

The changes look massive, but they just renames, movements, and splits of existing classes and namespaces. There is (or should be) no semantic changes.

There is still room for more improvements, but because I get merge conflicts whenever I merge the master into this branch, I want to merge the current changes into the master already now.

What changed as a result

Namespaces went from 122 to 137, and 388 files moved to match. The
substantive ones:

  • SEE.GO is gone (41 files). It was too unspecific to carry meaning in
    an architecture derived from namespaces. Its contents are now in
    SEE.Components.* (GameNodes, GameEdges, GraphElements, Objects),
    SEE.Factories, SEE.MetricScales and SEE.Cities.
  • Controls/Actions is split by kind: ReversibleActions, Modifiers,
    CodeCityActions, Players, RoomObjects, SpeechInput, MetricCharts.
  • Game/SceneManipulationSEE.SceneManipulation, which no longer
    pretends to be part of Game.
  • DataModel/DG/IO is split by format: GXL, CSV, ReportImports.
  • GameObjectExtensions.cs is split into ten focused files under
    Assets/SEE/Extensions/ (GameNodeExtensions, GameObjectScaleExtensions,
    GraphElementObjectExtensions, GameObjectHierarchyExtensions,
    GameEdgeExtensions, CodeCityExtensions, and others).

Removals

  • JaCoCoImporter and JaCoCoGraphProvider are superseded by the generic
    report-import framework; JaCoCoParsingConfig moved to
    DataModel/DG/IO/ReportImports/ and TestJaCoCoReport covers it.
    Data/JLGExample/jacoco.xml went with them.
  • Dead code: GO, BoundingBox, GameNodeHierarchy, VRStatus, XRInput,
    GlobalGameObjectNames, HideSourceCodeAndPaper, TextGUIAndPaperResizer
    and its editor, plus unused methods on SceneQueries (GetRoots moved to
    its only caller ChartContent, GetLocalPlayer to WindowSpaceManager).

Review notes

The restructuring is mechanical but large. Reviewing it file by file is not
worthwhile; the two places worth attention are the ten new files under
Assets/SEE/Extensions/ (a split of a god-file).

The Python files for architecture verification are still work in progress. They do not need to be reviewed.

koschke added 30 commits March 17, 2026 18:18
It is not an Interactable.

Actually, it should be moved to a new namespace Decorators or the like.
Nodes are searched, not graphs.
Nodes are searched, not graphs.
koschke added 20 commits May 12, 2026 17:18
…-verify-architecture

# Conflicts:
#	Assets/SEE/Net/Util/FileSync/FileEvent.cs.meta
…-verify-architecture

# Conflicts:
#	Assets/SEE/Controls/ReversibleActions/AddEdgeAction.cs
#	Assets/SEE/Game/Avatars/BodyAnimator.cs
#	Assets/SEE/Game/CityRendering/GameNodeHierarchy.cs
#	Assets/SEE/Game/SceneQueries.cs
#	Assets/SEE/UserSettings/UserSettings.cs
#	Assets/SEEPlayModeTests/TestSEEGame.cs
#	Assets/SEEPlayModeTests/TestUI.cs
#	Assets/SEETests/TestGraphProviderIO.cs
#	Assets/SEETests/TestGraphProviders.cs
#	Assets/SEETests/TestJacocoImporter.cs
…-verify-architecture

# Conflicts:
#	Assets/SEE/GameObjects/GameObjectExtensions.cs
#	Assets/SEE/UI/ContextMenu.cs
We now check the precise number of nodes of the JaCoCo GXL file.
Fixed spelling of node ID (one bracket too much).
Improved documentation.
@koschke koschke linked an issue Sep 3, 2026 that may be closed by this pull request
(where it must be placed at the first position) and Python modules running at later
stages of the Axivion CI.
"""
from typing import List

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The change set is extremely large and mechanical, and there are confirmed namespace/documentation inconsistencies that should be corrected before merging.

Pull request overview

This PR reorganizes the SEE codebase’s namespaces and file layout to better reflect and verify the intended architecture (incl. Axivion reflexion analysis support), primarily via mechanical moves/renames/splits with the stated goal of no semantic behavior change.

Changes:

  • Re-namespaces and redistributes previously broad areas (e.g., removal of SEE.GO, splitting controls/actions by kind, moving Game/SceneManipulation to SEE.SceneManipulation).
  • Splits DataModel/DG/IO into format-/purpose-specific namespaces (e.g., GXL, CSV, ReportImports) and updates call sites/tests.
  • Adds/updates Axivion architecture config/scripts and example metric input data (e.g., jacoco CSV).
File summaries
File Description
Axivion/reduce.py Extends Axivion reduction node types to include interfaces.
Axivion/architecture/rules/setup_final.py Adds final-step view creation script for architecture/mapping views.
Axivion/architecture/dashboard/stop_dashboard.bat Adds a helper script to stop the Axivion dashboard.
Axivion/architecture/config/axivion_config.json Adds Axivion config layering definition.
Axivion/architecture/config/compiler_config.json Adds compiler/toolchain config stub for Axivion.
Data/jacoco/jacoco.csv Introduces new sample metrics CSV for JaCoCo-related IDs.
Data/JLGExample/CodeFacts.csv Removes old sample metrics CSV content.
Assets/SEE/Controls/Modifiers/TooltipContentBuilder.cs Introduces/updates tooltip text builder used by hover modifier; currently has a namespace placement inconsistency.
Assets/SEETests/TestGameObjectDimensions.cs Updates tests to new extensions namespace; contains an invalid XML doc cref reference.
Assets/SEE/Extensions/Extensions.cs Adds namespace “home” stub for extensions; contains a minor doc-comment typo.
Review details
  • Files reviewed: 197/884 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +5 to 6
namespace SEE.Controls.ReversibleActions
{
Comment on lines +1 to +4
/// <summary>
/// Provides extension methods for game objects (not limited to
/// game nodes and game edges; there are extensions for Color, too.
/// </summary>
Comment on lines 6 to 8
/// <summary>
/// Tests for <see cref="SEE.GO.GameObjectExtensions"/> regarding dimensions.
/// Tests for <see cref="SEE.Extensions"/> regarding dimensions.
/// </summary>
@Cyclone1337

Copy link
Copy Markdown
Collaborator

If the available AI credits allow it, I would probably have chosen the Copilot review with the Balanced effort level for this PR. Although most of the changes are mechanical, the restructuring affects a very large part of the project, with many file moves and namespace changes.

GitHub itself recommends Lite mainly for routine changes where fast feedback is the priority, and Balanced for larger or more complex changes where a deeper review can be useful. Given the size of this restructuring, a Balanced review might therefore be worthwhile and could potentially catch additional inconsistencies.

@koschke

koschke commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator Author

If the available AI credits allow it, I would probably have chosen the Copilot review with the Balanced effort level for this PR. Although most of the changes are mechanical, the restructuring affects a very large part of the project, with many file moves and namespace changes.

I can do (and just did) that, although I asked already Claude for a deep review locally and ran all editor-mode tests without failure.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Target-node resolution is incorrect, one class is assigned to the wrong namespace, and two files contain embedded BOM characters.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

Assets/SEE/Controls/Modifiers/TooltipContentBuilder.cs:5

  • This class was moved under Controls/Modifiers, but its namespace places it among reversible actions. Every other class in this directory uses SEE.Controls.Modifiers (for example, ShowHoverInfo.cs:8), and ShowHoverInfo is its only consumer, so this undermines the namespace-based architecture being introduced here.
  • Files reviewed: 197/884 changed files
  • Comments generated: 3
  • Review effort level: Balanced

{
if (gameEdge.CompareTag(Tags.Edge) && gameEdge.TryGetComponent(out EdgeRef edgeRef))
{
return GraphElementIDMap.Find(edgeRef.SourceNodeID, mustFindElement: true);
using SEE.GO;
using UnityEngine;
using SEE.Extensions;
using UnityEngine;
@@ -1,6 +1,6 @@
using Michsky.UI.ModernUIPack;
using SEE.Controls.ReversibleActions.Drawable;
using Cysharp.Threading.Tasks;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reconstruct and verify architecture

3 participants