Logo
NeoArc Studio

Semantic Diff Engine

NeoArc analyses changes as architectural decisions, not line-level diffs. Every change is classified as structural or cosmetic, giving architects a meaningful view of what actually matters.

Standard Git diffs show line-level changes in JSON files. For architecture documentation, this creates noise: a node repositioned on a diagram canvas produces dozens of changed lines that are structurally irrelevant. NeoArc's Semantic Diff Engine analyses changes at the architectural level, classifying each modification by its significance.

How It Works

Structural vs Cosmetic Changes

The engine distinguishes between changes that affect architectural meaning and those that affect presentation only:

Resource TypeStructural ChangesCosmetic Changes
Graph NodeLabel, properties, tags, constraintsx, y, isPinned
SchemaType, extends, fieldsName, description
REST EndpointMethod, path, parameters, requestBodySummary, description
Diagram ShapeShapeType, text, metadatax, y, width, height, colours
Diagram ConnectionSource, target, pathTypeWaypoints, strokeColour

Change Classification

At the resource level, each change is classified into one of four categories:

UUID-Based Resource Matching

Every resource in NeoArc has a stable UUID that persists across renames, moves, and restructuring. The semantic diff engine matches resources by UUID, not by file path or display name. This means:

Rename Detection
Renaming a schema from "OrderV1" to "Order" is detected as a rename, not a delete-and-add.
Move Detection
Moving a diagram shape to a different position is detected as a cosmetic change on the same resource.
Reference Stability
References between resources use UUIDs. A renamed resource does not break its downstream references.
History Continuity
The full change history of a resource is preserved across renames and restructuring.

Integration with Git Workflow

The semantic diff engine powers several features across NeoArc:

FeatureHow Semantic Diff is Used
Working tree diffShows architectural changes in unstaged files
Staged diffShows what will be included in the next checkpoint
Track comparisonCompares architectural state between two tracks (branches)
Baseline comparisonMeasures drift from a governance-approved baseline
Conflict resolutionClassifies conflicts as independent (auto-resolvable) or competing (require decision)
Change feedGenerates architectural change summaries for each checkpoint