Repository Analysis

MirrorNetworking/Mirror

#1 Open Source Unity Networking Library

4.0 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of MirrorNetworking/Mirror, a C# project with 6,248 GitHub stars. SynthScan v2.0 examined 120,406 lines of code across 1009 source files, recording 410 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 4.0 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

4.0
Adjusted Score
4.0
Raw Score
100%
Time Factor
2026-07-14
Last Push
6.2K
Stars
C#
Language
120.4K
Lines of Code
1.0K
Files
410
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 1MEDIUM 33LOW 376

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 410 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Over-Commented Block368 hits · 364 pts
SeverityFileLineSnippetContext
LOW…__Network Authenticator-NewNetworkAuthenticator.cs.txt21COMMENT
LOW…7-Mirror__Network Transform-NewNetworkTransform.cs.txt101 /// Called by both CmdTeleport and RpcTeleport on server and clients, respectively.COMMENT
LOW…ror__Network Room Manager-NewNetworkRoomManager.cs.txt21 // Overrides the base singleton so we don'tCOMMENT
LOW…ror__Network Room Manager-NewNetworkRoomManager.cs.txt41COMMENT
LOW…ror__Network Room Manager-NewNetworkRoomManager.cs.txt61 /// </summary>COMMENT
LOW…ror__Network Room Manager-NewNetworkRoomManager.cs.txt121 /// This is called on the server when all the players in the room are ready.COMMENT
LOW…ror__Network Room Manager-NewNetworkRoomManager.cs.txt141 /// </summary>COMMENT
LOW…irror__Network Room Player-NewNetworkRoomPlayer.cs.txt21 /// <para>This could be triggered by NetworkServer.Listen() for objects in the scene, or by NetworkServer.Spawn() foCOMMENT
LOW…irror__Network Room Player-NewNetworkRoomPlayer.cs.txt41 /// </summary>COMMENT
LOW…irror__Network Room Player-NewNetworkRoomPlayer.cs.txt61 public override void OnStopAuthority() { }COMMENT
LOW…irror__Network Room Player-NewNetworkRoomPlayer.cs.txt81COMMENT
LOW…om Interest Management-CustomInterestManagement.cs.txt41 newObservers.Add(conn);COMMENT
LOW…om Interest Management-CustomInterestManagement.cs.txt81 void Update()COMMENT
LOW…nager With Actions-NewNetworkManagerWithActions.cs.txt161 }COMMENT
LOW…nager With Actions-NewNetworkManagerWithActions.cs.txt221 /// <summary>COMMENT
LOW…2-Mirror__Network Behaviour-NewNetworkBehaviour.cs.txt41COMMENT
LOW…2-Mirror__Network Behaviour-NewNetworkBehaviour.cs.txt61 /// Called when the local player object has been set up.COMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt81 #region Scene ManagementCOMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt101 /// Called on the server when a scene is completed loaded, when the scene load was initiated by the server with ServCOMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt121 base.OnClientSceneChanged();COMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt161 {COMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt201 /// <summary>COMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt221COMMENT
LOW…es/50-Mirror__Network Manager-NewNetworkManager.cs.txt241 /// This is invoked when the client is started.COMMENT
LOW…6-Mirror__Network Discovery-NewNetworkDiscovery.cs.txt41COMMENT
LOW…6-Mirror__Network Discovery-NewNetworkDiscovery.cs.txt61 /// such as the name of the host playerCOMMENT
LOW…6-Mirror__Network Discovery-NewNetworkDiscovery.cs.txt81 /// <returns>An instance of ServerRequest with data to be broadcasted</returns>COMMENT
LOWAssets/Mirror/Core/NetworkClient.cs21 public static partial class NetworkClientCOMMENT
LOWAssets/Mirror/Core/NetworkClient.cs41COMMENT
LOWAssets/Mirror/Core/NetworkClient.cs341 elseCOMMENT
LOWAssets/Mirror/Core/NetworkClient.cs421 // then all batched messages should have been processed now.COMMENT
LOWAssets/Mirror/Core/NetworkClient.cs461 // Raise the event before changing ConnectStateCOMMENT
LOWAssets/Mirror/Core/NetworkClient.cs1341COMMENT
LOWAssets/Mirror/Core/NetworkClient.cs1601 if (isSpawnFinished)COMMENT
LOWAssets/Mirror/Core/NetworkClient.cs2021 spawnableObjects.Clear();COMMENT
LOWAssets/Mirror/Core/NetworkMessages.cs21COMMENT
LOWAssets/Mirror/Core/NetworkMessages.cs61 // -> Every message in a batch has a varuint size header.COMMENT
LOWAssets/Mirror/Core/NetworkMessages.cs121 // protect against DOS attacks if attackers try to send invalidCOMMENT
LOWAssets/Mirror/Core/SyncObject.cs21 /// <summary>Used internally to check if we are currently tracking changes.</summary>COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs41 // tick rate is in Hz.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs101COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs241 {COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs581 // else Debug.LogWarning($"Did not find target for sync message for {message.netId} . Note: this can be compCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1001 // unbatcher already cleared batches when it detected the error.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1081 // try get connection. passes null otherwise.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1201 // we are iterating here.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1221 OnTransportDisconnected(conn.connectionId);COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1421 conn.identity = null;COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1461 {COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1621COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1641 // only if server activeCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2021 }COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2141 {COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2261 // copy all connections into a helper collection so thatCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2281 // pull in UpdateVarsMessage for each entity it observesCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2341 // snapshots might be sent way too often, etc.COMMENT
LOWAssets/Mirror/Core/NetworkBehaviour.cs41 [Tooltip("By default synced data is sent from the server to all Observers of the object.\nChange this to Owner tCOMMENT
LOWAssets/Mirror/Core/NetworkBehaviour.cs81 /// <summary>authority is true if we are allowed to modify this component's state. On server, it's true if SyncDCOMMENT
LOWAssets/Mirror/Core/NetworkBehaviour.cs141 // * run a delta compression algorithmCOMMENT
LOWAssets/Mirror/Core/NetworkBehaviour.cs301 // on server: only if ServerToClient.COMMENT
308 more matches not shown…
Decorative Section Separators28 hits · 84 pts
SeverityFileLineSnippetContext
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1468// ── RegisterHandler ──────────────────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1502// ── SendToReady ───────────────────────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1539// ── SendToAll oversized ───────────────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1558// ── Transport error / exception events ───────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1589// ── exceptionsDisconnect = false ──────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1608// ── Destroy ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1644// ── AddPlayerForConnection ────────────────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1692// ── RemovePlayerForConnection options ────────────────────────────────────────COMMENT
MEDIUM…Mirror/Tests/Editor/NetworkServer/NetworkServerTest.cs1796 // ── SendCommand from not-ready client ────────────────────────────────────────COMMENT
MEDIUM…sts/Editor/NetworkClient/NetworkClientTests_OnSpawn.cs575 // ── OnObjectSpawnStarted / OnObjectSpawnFinished ──────────────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_ReadyAndAddPlayer.cs95 // ── InternalAddPlayer() ───────────────────────────────────────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_TimeInterpolation.cs27 // ── InitTimeInterpolation (via ConnectHost / Initialize) ──────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_TimeInterpolation.cs61 // ── Computed properties ───────────────────────────────────────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_TimeInterpolation.cs78 // ── OnTimeSnapshot ───────────────────────────────────────────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_TimeInterpolation.cs148 // ── UpdateTimeInterpolation (via NetworkEarlyUpdate) ──────────────────COMMENT
MEDIUM…/NetworkClient/NetworkClientTests_TimeInterpolation.cs167 // ── Disconnect resets interpolation state ────────────────────────────────────COMMENT
MEDIUM…or/NetworkClient/NetworkClientTests_OnTransportData.cs66 // ── Too-short message (1-byte segment, < IdSize = 2) ─────────────────COMMENT
MEDIUM…or/NetworkClient/NetworkClientTests_OnTransportData.cs97 // ── Unknown message id (no handler registered for the type) ──────────COMMENT
MEDIUM…or/NetworkClient/NetworkClientTests_OnTransportData.cs140 // ── isLoadingScene halts the processing loop ─────────────────────────COMMENT
MEDIUM…tor/NetworkClient/NetworkClientTests_DestroyObjects.cs16 // ── OnObjectDestroy ───────────────────────────────────────────────────COMMENT
MEDIUM…tor/NetworkClient/NetworkClientTests_DestroyObjects.cs93 // ── DestroyAllClientObjects ───────────────────────────────────────────COMMENT
MEDIUM…ts/Editor/NetworkClient/NetworkClientTests_Shutdown.cs14 // ── Bool state fields ─────────────────────────────────────────────────COMMENT
MEDIUM…ts/Editor/NetworkClient/NetworkClientTests_Shutdown.cs49 // ── Reference fields ──────────────────────────────────────────────────COMMENT
MEDIUM…ts/Editor/NetworkClient/NetworkClientTests_Shutdown.cs66 // ── Event delegates ───────────────────────────────────────────────────COMMENT
MEDIUM…r/NetworkClient/NetworkClientTests_TransportAndSend.cs16 // ── Send() error paths ───────────────────────────────────────────────COMMENT
MEDIUM…r/NetworkClient/NetworkClientTests_TransportAndSend.cs39 // ── Disconnect() guard ───────────────────────────────────────────────COMMENT
MEDIUM…r/NetworkClient/NetworkClientTests_TransportAndSend.cs66 // ── OnTransportData null-connection guard ─────────────────────────────────────COMMENT
MEDIUM…r/NetworkClient/NetworkClientTests_TransportAndSend.cs79 // ── Transport error / exception event forwarding ──────────────────────────────────COMMENT
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUM…ports/Edgegap/EdgegapLobby/EdgegapLobbyKcpTransport.cs332 // Absolutely make sure there's time for the network request to hit edgegap servers.COMMENT
MEDIUM…ports/Edgegap/EdgegapLobby/EdgegapLobbyKcpTransport.cs339 // Absolutely make sure there's time for the network request to hit edgegap servers.COMMENT
MEDIUMAssets/Mirror/Transports/KCP/kcp2k/highlevel/KcpPeer.cs275 // this is just faster and more robust.COMMENT
MEDIUM…amples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs5 // This script demonstrates the NetworkAnimator and how to leverageCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHAssets/Mirror/Examples/AdditiveLevels/Scripts/Portal.cs67 // Note that I have created layers called Player(6) and Portal(7) and set themCOMMENT
Fake / Example Data5 hits · 6 pts
SeverityFileLineSnippetContext
LOW…rror/Tests/Editor/SyncCollections/SyncListClassTest.cs24 TestObject item1 = new TestObject { id = 1, text = "Lorem ipsum dolor sit, amet consectetur adipisicing elitCODE
LOW…rror/Tests/Editor/SyncCollections/SyncListClassTest.cs26 TestObject item2 = new TestObject { id = 2, text = "Lorem ipsum dolor sit, amet consectetur adipisicing elitCODE
LOW…rror/Tests/Editor/SyncCollections/SyncListClassTest.cs51 TestObject item1 = new TestObject { id = 1, text = "Lorem ipsum dolor sit, amet consectetur adipisicing elitCODE
LOW…rror/Tests/Editor/SyncCollections/SyncListClassTest.cs53 TestObject item2 = new TestObject { id = 2, text = "Lorem ipsum dolor sit, amet consectetur adipisicing elitCODE
LOWAssets/Mirror/Hosting/Edgegap/Editor/EdgegapWindowV2.cs2417 /// <param name="placeholder">Placeholder value to use.</param>COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.releaserc.yml72 # Create a new release on GitHubCOMMENT
Slop Phrases2 hits · 2 pts
SeverityFileLineSnippetContext
LOWAssets/Mirror/Hosting/Edgegap/Editor/EdgegapWindowV2.cs925 //OnBuildContainerizeUploadSuccess(_linuxRequirementsResultLabel, "Requirements installed. Don't forget COMMENT
LOWAssets/Mirror/Hosting/Edgegap/Editor/EdgegapWindowV2.cs1921 "Server deployed successfully. Don't forget to remove the deployment after testing.",CODE
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…ror/Hosting/Edgegap/Editor/EdgegapServerDataManager.cs81 public static class EdgegapServerDataManagerCODE