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,310 GitHub stars. SynthScan v2.0 examined 120,409 lines of code across 1009 source files, recording 411 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-08-22
Last Push
6.3K
Stars
C#
Language
120.4K
Lines of Code
1.0K
Files
411
Pattern Hits
2026-08-29
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

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

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 377

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 411 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 Block369 hits · 366 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 // both are stored in a single snapshot for interpolation.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs921 // processing. otherwise we might apply them to the old scene.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs981 catch (Exception e)COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1061 // transport errors will happen. logging a warning is enough.COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1181 // conn.Disconnect -> Transport.ServerDisconnect callsCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1201 // call OnDisconnected unless local player in host modCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1221 // automatically spawned, so you do not need to call NetworkServer.SpawnCOMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1441COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1601 });COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs1621 public static bool SpawnObjects()COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2001 {COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2121 bool hasNull = false;COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2261 // has this connection joined the world yet?COMMENT
LOWAssets/Mirror/Core/NetworkServer.cs2321 // for example, host mode server doesn't set .targetFrameRate.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
309 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