Skip to content

Repo migration#211

Open
Eli Pinkerton (wallstop) wants to merge 72 commits into
masterfrom
dev/wallstop/swap
Open

Repo migration#211
Eli Pinkerton (wallstop) wants to merge 72 commits into
masterfrom
dev/wallstop/swap

Conversation

@wallstop
Copy link
Copy Markdown
Collaborator

@wallstop Eli Pinkerton (wallstop) commented May 16, 2026

Description

This PR completes a comprehensive repository migration that enhances project infrastructure, automation, and documentation. The changes reorganize the codebase for better maintainability and establish operational runbooks for the release and deployment process.

Changes

Infrastructure & CI/CD

  • Added new GitHub Actions workflows: Release pipeline, Unity testing (IL2CPP), Unity benchmarks, and banner validation
  • Updated Dependabot and release drafter configuration for improved dependency management
  • Enhanced dev container setup for better local development experience
  • Added validation scripts for repository identity and banner compliance

Documentation

  • New operational documentation (docs/ops/) covering:
    • GitHub repository transfer procedures
    • Release operations and versioning workflows
    • NPM package publishing processes
    • OpenUPM metadata management
    • Ambiguous release migration procedures
    • Post-transfer verification checklist
  • Added banner SVG convention guidelines for LLM skills documentation

Automation & Tooling

  • New scripts for automated release runbook generation
  • Repository identity validation tooling
  • Updated pre-commit hooks configuration
  • Enhanced npm package configuration and .npmignore settings

LLM Context & Skills

  • Organized and updated 70+ LLM skill files for better AI agent instruction quality
  • Added comprehensive GitHub Actions guidelines
  • Enhanced documentation, packaging, and performance skill specifications
  • Improved project context for consistent AI-assisted development

Type of Change

  • Refactor (code change that neither fixes a bug nor adds a feature)
  • Documentation update
  • CI/CD improvement

Performance Impact

N/A - Infrastructure and documentation updates only

Testing

  • All existing tests continue to pass
  • New validation scripts verify repository structure integrity
  • Updated CI/CD workflows tested with new Unity test automation

Note

High Risk
Changes default-branch Unity perf autocommits, release gates on self-hosted runners with license/org-lock secrets, and broad workflow/devcontainer contract edits—misconfiguration can block merges or leak license seats.

Overview
This PR retargets the repo to Ambiguous-Interactive/DxMessaging (devcontainer labels, GitHub Pages/docs URLs, issue templates, release-drafter guard) and wires Claude Code hooks for pre-push guards and post-edit YAML/validation checks.

Devcontainer & caching: Adds a fifth volume mount (dxm-node-modules) and pre-creates node_modules ownership; replaces brittle grep/jq-on-raw-JSON with .devcontainer/lib/parse-devcontainer-mounts.sh (JSONC strip + jq, loud failures, mount parsing tolerant of extra fields). Post-create now installs hooks via scripts/ensure-pre-commit.js.

CI / Unity: Introduces composite actions for serial Unity license preflight, asmdef discovery, host prereqs (VC++/pwsh on self-hosted Windows), log tail + catastrophic compile patterns, NUnit verification, and license return. New release.yml (tag verify → validate → self-hosted editmode Unity → npm publish + GH release), perf-numbers.yml (replaces PR-body perf gate; benchmarks on fast runner, PR comment + master autocommit with loop guard), and cross-platform-preflight.yml. Disabled workflows drop UNITY_LICENSE / floating server in favor of UNITY_SERIAL + email/password; unity-il2cpp.yml removed from disabled set. dotnet-tests gains committed-analyzer staleness check and fixes coverage glob.

Tooling hygiene: Workflows and devcontainer scripts route pre-commit through ensure-pre-commit.js; Dependabot drops personal assignees/reviewers; cspell ignore/word lists expanded; PR template points perf numbers to CI; actionlint.yaml documents custom runner labels.

Reviewed by Cursor Bugbot for commit ac8725d. Bugbot is set up for automated code reviews on this repo. Configure here.

Copilot AI review requested due to automatic review settings May 16, 2026 22:44
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR is described as a comprehensive repository migration (CI/CD, docs, scripts, LLM skills). However, the diff content actually visible here is limited to a small subset of the migration: a URL update in one analyzer test to point at the new Ambiguous-Interactive/DxMessaging repo, removal of an in-line <!-- Removed copy ... --> comment from a .csproj, and the addition of several auto-generated C# Dev Kit .lscache files (plus Unity .meta siblings) that should not be checked in.

Changes:

  • Update analyzer help-link URL in tests from wallstop/DxMessaging to Ambiguous-Interactive/DxMessaging.
  • Remove a stale XML comment from WallstopStudios.DxMessaging.SourceGenerators.csproj.
  • Add auto-generated *.csproj.lscache cache files (and .meta siblings) for the Analyzer, SourceGenerators, and SourceGenerators.Tests projects.

Reviewed changes

Copilot reviewed 150 out of 154 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
SourceGenerators/.../SourceGenerators.csproj Drops a stale XML comment.
SourceGenerators/.../SourceGenerators.csproj.lscache (+ .meta) Adds an auto-generated C# Dev Kit cache that should not be tracked.
SourceGenerators/.../SourceGenerators.Tests.csproj.lscache (+ .meta) Adds another auto-generated cache containing machine-specific paths/SDKs.
SourceGenerators/.../Analyzer.csproj.lscache (+ .meta) Adds another auto-generated cache file.
SourceGenerators/.../MessageAwareComponentBaseCallAnalyzerTests.cs Updates the analyzer help-link URL to the new org; assumes master branch.

Comment on lines +1 to +193
version=1

# This file caches language service data to improve the performance of C# Dev Kit.
# It is not intended for manual editing. It can safely be deleted and will be
# regenerated automatically. For more information, see https://aka.ms/lscache
#
# To control where cache files are stored, use the following VS Code setting:
# "dotnet.projectsystem.cacheInProjectFolder": true

[project]
language=C#
primary
lastDtbSucceeded

[properties]
AssemblyName=WallstopStudios.DxMessaging.SourceGenerators
CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE
CompilerGeneratedFilesOutputPath=
MaxSupportedLangVersion=7.3
ProjectAssetsFile=<PATH>obj/project.assets.json
RootNamespace=WallstopStudios.DxMessaging.SourceGenerators
RunAnalyzers=
RunAnalyzersDuringLiveAnalysis=
SolutionPath=<PATH>../../com.wallstop-studios.dxmessaging.sln
TargetFrameworkIdentifier=.NETStandard
TargetPath=<PATH>bin/Debug/netstandard2.0/WallstopStudios.DxMessaging.SourceGenerators.dll
TargetRefPath=
TemporaryDependencyNodeTargetIdentifier=netstandard2.0

[commandLineArguments]
/noconfig
/unsafe-
/checked-
/nowarn:1701,1702,1701,1702
/fullpaths
/nostdlib+
/errorreport:prompt
/define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0;NETSTANDARD1_0_OR_GREATER;NETSTANDARD1_1_OR_GREATER;NETSTANDARD1_2_OR_GREATER;NETSTANDARD1_3_OR_GREATER;NETSTANDARD1_4_OR_GREATER;NETSTANDARD1_5_OR_GREATER;NETSTANDARD1_6_OR_GREATER;NETSTANDARD2_0_OR_GREATER
/highentropyva+
/debug+
/debug:portable
/filealign:512
/optimize-
/out:obj\Debug\netstandard2.0\WallstopStudios.DxMessaging.SourceGenerators.dll
/target:library
/warnaserror-
/utf8output
/deterministic+
/langversion:latest
/warnaserror+:NU1605

[sourceFiles]
DxAutoConstructorGenerator.cs
DxMessageIdGenerator.cs
obj/Debug/netstandard2.0/
.NETStandard,Version=v2.0.AssemblyAttributes.cs
WallstopStudios.DxMessaging.SourceGenerators.AssemblyInfo.cs

[metadataReferences]
<NUGET>/
microsoft.codeanalysis.common/4.2.0/lib/netstandard2.0/Microsoft.CodeAnalysis.dll
microsoft.codeanalysis.csharp/4.2.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll
netstandard.library/2.0.3/build/netstandard2.0/ref/
Microsoft.Win32.Primitives.dll
mscorlib.dll
netstandard.dll
System.AppContext.dll
System.Collections.Concurrent.dll
System.Collections.dll
System.Collections.NonGeneric.dll
System.Collections.Specialized.dll
System.ComponentModel.Composition.dll
System.ComponentModel.dll
System.ComponentModel.EventBasedAsync.dll
System.ComponentModel.Primitives.dll
System.ComponentModel.TypeConverter.dll
System.Console.dll
System.Core.dll
System.Data.Common.dll
System.Data.dll
System.Diagnostics.Contracts.dll
System.Diagnostics.Debug.dll
System.Diagnostics.FileVersionInfo.dll
System.Diagnostics.Process.dll
System.Diagnostics.StackTrace.dll
System.Diagnostics.TextWriterTraceListener.dll
System.Diagnostics.Tools.dll
System.Diagnostics.TraceSource.dll
System.Diagnostics.Tracing.dll
System.dll
System.Drawing.dll
System.Drawing.Primitives.dll
System.Dynamic.Runtime.dll
System.Globalization.Calendars.dll
System.Globalization.dll
System.Globalization.Extensions.dll
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll
System.IO.Compression.ZipFile.dll
System.IO.dll
System.IO.FileSystem.dll
System.IO.FileSystem.DriveInfo.dll
System.IO.FileSystem.Primitives.dll
System.IO.FileSystem.Watcher.dll
System.IO.IsolatedStorage.dll
System.IO.MemoryMappedFiles.dll
System.IO.Pipes.dll
System.IO.UnmanagedMemoryStream.dll
System.Linq.dll
System.Linq.Expressions.dll
System.Linq.Parallel.dll
System.Linq.Queryable.dll
System.Net.dll
System.Net.Http.dll
System.Net.NameResolution.dll
System.Net.NetworkInformation.dll
System.Net.Ping.dll
System.Net.Primitives.dll
System.Net.Requests.dll
System.Net.Security.dll
System.Net.Sockets.dll
System.Net.WebHeaderCollection.dll
System.Net.WebSockets.Client.dll
System.Net.WebSockets.dll
System.Numerics.dll
System.ObjectModel.dll
System.Reflection.dll
System.Reflection.Extensions.dll
System.Reflection.Primitives.dll
System.Resources.Reader.dll
System.Resources.ResourceManager.dll
System.Resources.Writer.dll
System.Runtime.CompilerServices.VisualC.dll
System.Runtime.dll
System.Runtime.Extensions.dll
System.Runtime.Handles.dll
System.Runtime.InteropServices.dll
System.Runtime.InteropServices.RuntimeInformation.dll
System.Runtime.Numerics.dll
System.Runtime.Serialization.dll
System.Runtime.Serialization.Formatters.dll
System.Runtime.Serialization.Json.dll
System.Runtime.Serialization.Primitives.dll
System.Runtime.Serialization.Xml.dll
System.Security.Claims.dll
System.Security.Cryptography.Algorithms.dll
System.Security.Cryptography.Csp.dll
System.Security.Cryptography.Encoding.dll
System.Security.Cryptography.Primitives.dll
System.Security.Cryptography.X509Certificates.dll
System.Security.Principal.dll
System.Security.SecureString.dll
System.ServiceModel.Web.dll
System.Text.Encoding.dll
System.Text.Encoding.Extensions.dll
System.Text.RegularExpressions.dll
System.Threading.dll
System.Threading.Overlapped.dll
System.Threading.Tasks.dll
System.Threading.Tasks.Parallel.dll
System.Threading.Thread.dll
System.Threading.ThreadPool.dll
System.Threading.Timer.dll
System.Transactions.dll
System.ValueTuple.dll
System.Web.dll
System.Windows.dll
System.Xml.dll
System.Xml.Linq.dll
System.Xml.ReaderWriter.dll
System.Xml.Serialization.dll
System.Xml.XDocument.dll
System.Xml.XmlDocument.dll
System.Xml.XmlSerializer.dll
System.Xml.XPath.dll
System.Xml.XPath.XDocument.dll
system.buffers/4.5.1/ref/netstandard2.0/System.Buffers.dll
system.collections.immutable/5.0.0/lib/netstandard2.0/System.Collections.Immutable.dll
system.memory/4.5.4/lib/netstandard2.0/System.Memory.dll
system.numerics.vectors/4.4.0/ref/netstandard2.0/System.Numerics.Vectors.dll
system.reflection.metadata/5.0.0/lib/netstandard2.0/System.Reflection.Metadata.dll
system.runtime.compilerservices.unsafe/6.0.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll
system.text.encoding.codepages/6.0.0/lib/netstandard2.0/System.Text.Encoding.CodePages.dll
system.threading.tasks.extensions/4.5.4/lib/netstandard2.0/System.Threading.Tasks.Extensions.dll

[analyzerReferences]
<NUGET>/microsoft.codeanalysis.analyzers/3.3.3/analyzers/dotnet/cs/
Microsoft.CodeAnalysis.Analyzers.dll
Microsoft.CodeAnalysis.CSharp.Analyzers.dll

[analyzerConfigFiles]
../../.editorconfig
obj/Debug/netstandard2.0/WallstopStudios.DxMessaging.SourceGenerators.GeneratedMSBuildEditorConfig.editorconfig
Comment on lines +1 to +293
version=1

# This file caches language service data to improve the performance of C# Dev Kit.
# It is not intended for manual editing. It can safely be deleted and will be
# regenerated automatically. For more information, see https://aka.ms/lscache
#
# To control where cache files are stored, use the following VS Code setting:
# "dotnet.projectsystem.cacheInProjectFolder": true

[project]
language=C#
primary
lastDtbSucceeded

[properties]
AssemblyName=WallstopStudios.DxMessaging.SourceGenerators.Tests
CommandLineArgsForDesignTimeEvaluation=-langversion:13.0 -define:TRACE
CompilerGeneratedFilesOutputPath=
MaxSupportedLangVersion=13.0
ProjectAssetsFile=<PATH>obj/project.assets.json
RootNamespace=WallstopStudios.DxMessaging.SourceGenerators.Tests
RunAnalyzers=
RunAnalyzersDuringLiveAnalysis=
SolutionPath=<PATH>../../com.wallstop-studios.dxmessaging.sln
TargetFrameworkIdentifier=.NETCoreApp
TargetPath=<PATH>../../.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll
TargetRefPath=<PATH>../../.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll
TemporaryDependencyNodeTargetIdentifier=net9.0

[commandLineArguments]
/noconfig
/unsafe-
/checked-
/nowarn:1701,1702,1701,1702,8002
/fullpaths
/nostdlib+
/errorreport:prompt
/warn:9
/define:TRACE;DEBUG;NET;NET9_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NET9_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER
/highentropyva+
/nullable:enable
/debug+
/debug:portable
/filealign:512
/optimize-
/out:<PATH>../../.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll
/refout:<PATH>../../.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll
/target:exe
/warnaserror-
/utf8output
/deterministic+
/langversion:13.0
/warnaserror+:NU1605,SYSLIB0011

[sourceFiles]
../../.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/
.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs
WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs
../../Editor/Analyzers/
BaseCallIlInspector.cs
@folderNames=LinkedFromEditor
BaseCallLogMessageParser.cs
@folderNames=LinkedFromEditor
BaseCallReportAggregator.cs
@folderNames=LinkedFromEditor
BaseCallTypeScannerCore.cs
@folderNames=LinkedFromEditor
<NUGET>/microsoft.net.test.sdk/18.5.1/build/net8.0/Microsoft.NET.Test.Sdk.Program.cs
BaseCallIlInspectorTests.cs
BaseCallLogMessageParserTests.cs
BaseCallTypeScannerTests.cs
CompilationMessageHarvestTests.cs
DocsSnippetCompilationTests.cs
DxAutoConstructorGeneratorDiagnosticsTests.cs
DxMessageIdGeneratorDiagnosticsTests.cs
GeneratorTestUtilities.cs
MessageAwareComponentBaseCallAnalyzerTests.cs

[metadataReferences]
../
WallstopStudios.DxMessaging.Analyzer/bin/Debug/netstandard2.0/WallstopStudios.DxMessaging.Analyzer.dll
WallstopStudios.DxMessaging.SourceGenerators/bin/Debug/netstandard2.0/WallstopStudios.DxMessaging.SourceGenerators.dll
<DOTNET>/packs/Microsoft.NETCore.App.Ref/9.0.15/ref/net9.0/
Microsoft.CSharp.dll
Microsoft.VisualBasic.Core.dll
Microsoft.VisualBasic.dll
Microsoft.Win32.Primitives.dll
Microsoft.Win32.Registry.dll
mscorlib.dll
netstandard.dll
System.AppContext.dll
System.Buffers.dll
System.Collections.Concurrent.dll
System.Collections.dll
System.Collections.Immutable.dll
System.Collections.NonGeneric.dll
System.Collections.Specialized.dll
System.ComponentModel.Annotations.dll
System.ComponentModel.DataAnnotations.dll
System.ComponentModel.dll
System.ComponentModel.EventBasedAsync.dll
System.ComponentModel.Primitives.dll
System.ComponentModel.TypeConverter.dll
System.Configuration.dll
System.Console.dll
System.Core.dll
System.Data.Common.dll
System.Data.DataSetExtensions.dll
System.Data.dll
System.Diagnostics.Contracts.dll
System.Diagnostics.Debug.dll
System.Diagnostics.DiagnosticSource.dll
System.Diagnostics.FileVersionInfo.dll
System.Diagnostics.Process.dll
System.Diagnostics.StackTrace.dll
System.Diagnostics.TextWriterTraceListener.dll
System.Diagnostics.Tools.dll
System.Diagnostics.TraceSource.dll
System.Diagnostics.Tracing.dll
System.dll
System.Drawing.dll
System.Drawing.Primitives.dll
System.Dynamic.Runtime.dll
System.Formats.Asn1.dll
System.Formats.Tar.dll
System.Globalization.Calendars.dll
System.Globalization.dll
System.Globalization.Extensions.dll
System.IO.Compression.Brotli.dll
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll
System.IO.Compression.ZipFile.dll
System.IO.dll
System.IO.FileSystem.AccessControl.dll
System.IO.FileSystem.dll
System.IO.FileSystem.DriveInfo.dll
System.IO.FileSystem.Primitives.dll
System.IO.FileSystem.Watcher.dll
System.IO.IsolatedStorage.dll
System.IO.MemoryMappedFiles.dll
System.IO.Pipelines.dll
System.IO.Pipes.AccessControl.dll
System.IO.Pipes.dll
System.IO.UnmanagedMemoryStream.dll
System.Linq.dll
System.Linq.Expressions.dll
System.Linq.Parallel.dll
System.Linq.Queryable.dll
System.Memory.dll
System.Net.dll
System.Net.Http.dll
System.Net.Http.Json.dll
System.Net.HttpListener.dll
System.Net.Mail.dll
System.Net.NameResolution.dll
System.Net.NetworkInformation.dll
System.Net.Ping.dll
System.Net.Primitives.dll
System.Net.Quic.dll
System.Net.Requests.dll
System.Net.Security.dll
System.Net.ServicePoint.dll
System.Net.Sockets.dll
System.Net.WebClient.dll
System.Net.WebHeaderCollection.dll
System.Net.WebProxy.dll
System.Net.WebSockets.Client.dll
System.Net.WebSockets.dll
System.Numerics.dll
System.Numerics.Vectors.dll
System.ObjectModel.dll
System.Reflection.DispatchProxy.dll
System.Reflection.dll
System.Reflection.Emit.dll
System.Reflection.Emit.ILGeneration.dll
System.Reflection.Emit.Lightweight.dll
System.Reflection.Extensions.dll
System.Reflection.Metadata.dll
System.Reflection.Primitives.dll
System.Reflection.TypeExtensions.dll
System.Resources.Reader.dll
System.Resources.ResourceManager.dll
System.Resources.Writer.dll
System.Runtime.CompilerServices.Unsafe.dll
System.Runtime.CompilerServices.VisualC.dll
System.Runtime.dll
System.Runtime.Extensions.dll
System.Runtime.Handles.dll
System.Runtime.InteropServices.dll
System.Runtime.InteropServices.JavaScript.dll
System.Runtime.InteropServices.RuntimeInformation.dll
System.Runtime.Intrinsics.dll
System.Runtime.Loader.dll
System.Runtime.Numerics.dll
System.Runtime.Serialization.dll
System.Runtime.Serialization.Formatters.dll
System.Runtime.Serialization.Json.dll
System.Runtime.Serialization.Primitives.dll
System.Runtime.Serialization.Xml.dll
System.Security.AccessControl.dll
System.Security.Claims.dll
System.Security.Cryptography.Algorithms.dll
System.Security.Cryptography.Cng.dll
System.Security.Cryptography.Csp.dll
System.Security.Cryptography.dll
System.Security.Cryptography.Encoding.dll
System.Security.Cryptography.OpenSsl.dll
System.Security.Cryptography.Primitives.dll
System.Security.Cryptography.X509Certificates.dll
System.Security.dll
System.Security.Principal.dll
System.Security.Principal.Windows.dll
System.Security.SecureString.dll
System.ServiceModel.Web.dll
System.ServiceProcess.dll
System.Text.Encoding.CodePages.dll
System.Text.Encoding.dll
System.Text.Encoding.Extensions.dll
System.Text.Encodings.Web.dll
System.Text.Json.dll
System.Text.RegularExpressions.dll
System.Threading.Channels.dll
System.Threading.dll
System.Threading.Overlapped.dll
System.Threading.Tasks.Dataflow.dll
System.Threading.Tasks.dll
System.Threading.Tasks.Extensions.dll
System.Threading.Tasks.Parallel.dll
System.Threading.Thread.dll
System.Threading.ThreadPool.dll
System.Threading.Timer.dll
System.Transactions.dll
System.Transactions.Local.dll
System.ValueTuple.dll
System.Web.dll
System.Web.HttpUtility.dll
System.Windows.dll
System.Xml.dll
System.Xml.Linq.dll
System.Xml.ReaderWriter.dll
System.Xml.Serialization.dll
System.Xml.XDocument.dll
System.Xml.XmlDocument.dll
System.Xml.XmlSerializer.dll
System.Xml.XPath.dll
System.Xml.XPath.XDocument.dll
WindowsBase.dll
<NUGET>/
microsoft.applicationinsights/2.23.0/lib/netstandard2.0/Microsoft.ApplicationInsights.dll
microsoft.codeanalysis.common/4.14.0/lib/net9.0/Microsoft.CodeAnalysis.dll
microsoft.codeanalysis.csharp/4.14.0/lib/net9.0/Microsoft.CodeAnalysis.CSharp.dll
microsoft.codecoverage/18.5.1/lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll
microsoft.extensions.dependencymodel/8.0.2/lib/net8.0/Microsoft.Extensions.DependencyModel.dll
microsoft.testing.extensions.telemetry/2.1.0/lib/net9.0/Microsoft.Testing.Extensions.Telemetry.dll
microsoft.testing.extensions.trxreport.abstractions/2.1.0/lib/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll
microsoft.testing.extensions.vstestbridge/2.1.0/lib/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll
microsoft.testing.platform.msbuild/2.1.0/lib/net9.0/Microsoft.Testing.Extensions.MSBuild.dll
microsoft.testing.platform/2.1.0/lib/net9.0/Microsoft.Testing.Platform.dll
microsoft.testplatform.testhost/18.5.1/lib/net8.0/
Microsoft.TestPlatform.CommunicationUtilities.dll
Microsoft.TestPlatform.CoreUtilities.dll
Microsoft.TestPlatform.CrossPlatEngine.dll
Microsoft.TestPlatform.PlatformAbstractions.dll
Microsoft.TestPlatform.Utilities.dll
Microsoft.VisualStudio.TestPlatform.Common.dll
Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
testhost.dll
newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll
nunit/4.6.0/lib/net8.0/
nunit.framework.dll
nunit.framework.legacy.dll

[analyzerReferences]
<DOTNET>/packs/Microsoft.NETCore.App.Ref/9.0.15/analyzers/dotnet/cs/
Microsoft.Interop.ComInterfaceGenerator.dll
Microsoft.Interop.JavaScript.JSImportGenerator.dll
Microsoft.Interop.LibraryImportGenerator.dll
Microsoft.Interop.SourceGeneration.dll
System.Text.Json.SourceGeneration.dll
System.Text.RegularExpressions.Generator.dll
<DOTNET>/sdk/10.0.203/Sdks/Microsoft.NET.Sdk/analyzers/
Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll
Microsoft.CodeAnalysis.NetAnalyzers.dll
<NUGET>/microsoft.codeanalysis.analyzers/3.11.0/analyzers/dotnet/cs/
Microsoft.CodeAnalysis.Analyzers.dll
Microsoft.CodeAnalysis.CSharp.Analyzers.dll

[analyzerConfigFiles]
../../
.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig
.editorconfig
<DOTNET>/sdk/10.0.203/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_9_default.globalconfig
Comment on lines +1 to +7
version=1

# This file caches language service data to improve the performance of C# Dev Kit.
# It is not intended for manual editing. It can safely be deleted and will be
# regenerated automatically. For more information, see https://aka.ms/lscache
#
# To control where cache files are stored, use the following VS Code setting:
Comment on lines +1 to +7
fileFormatVersion: 2
guid: 77ade736dbc6157438dcc59994d0f36e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Comment on lines +1 to +7
fileFormatVersion: 2
guid: 4cc7d058656d7264cb6bc89e63bba002
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Comment on lines +1 to +7
fileFormatVersion: 2
guid: 51ffbc8b2d9b7fc48babc786e29c1289
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

string expectedLink =
$"https://github.com/wallstop/DxMessaging/blob/master/docs/reference/analyzers.md#{expectedAnchor}";
$"https://github.com/Ambiguous-Interactive/DxMessaging/blob/master/docs/reference/analyzers.md#{expectedAnchor}";
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 148 out of 152 changed files in this pull request and generated 5 comments.

run: |
set -euo pipefail
mkdir -p .artifacts/release
pack_json="$(npm pack --json --provenance=false)"
Comment on lines +186 to +219
- name: Create or update GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -euo pipefail
tag="${{ needs.verify-tag.outputs.tag }}"
if gh release view "${tag}" >/dev/null 2>&1; then
gh release upload "${tag}" \
.artifacts/release/*.tgz \
.artifacts/release/*.sha256 \
--clobber
gh release edit "${tag}" \
--title "${tag}" \
--notes-file .artifacts/release/release-notes.md \
--draft=false
else
gh release create "${tag}" \
.artifacts/release/*.tgz \
.artifacts/release/*.sha256 \
--title "${tag}" \
--notes-file .artifacts/release/release-notes.md \
--verify-tag
fi

- name: Publish to npm with provenance
run: |
set -euo pipefail
npx --yes --package=npm@^11.5.1 npm --version
package_file="$(find .artifacts/release -maxdepth 1 -name '*.tgz' -print -quit)"
if [ -z "${package_file}" ]; then
echo "::error::Packed npm package artifact is missing."
exit 1
fi
npx --yes --package=npm@^11.5.1 npm publish "${package_file}" --provenance --access public
Comment on lines +161 to +167
$content = Remove-SourceComments -Content (Get-Content $file.FullName -Raw)
if ($file.Extension -eq '.cs') {
$count += [regex]::Matches($content, '\[(?:UnityTest|Test|TestCase|TestCaseSource|Theory|Fact)\b').Count
} else {
$content = Remove-JavaScriptNonCode -Content (Get-Content $file.FullName -Raw)
$count += [regex]::Matches($content, '(?<![\w.])(?:test|it)\s*\(').Count
}
Comment on lines +67 to +91
function getRepositoryCandidateFiles(execFileSyncImpl = execFileSync) {
const trackedFiles = parseGitFileList(
execFileSyncImpl("git", ["ls-files"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);
const stagedFiles = parseGitFileList(
execFileSyncImpl("git", ["diff", "--cached", "--name-only", "--diff-filter=ACMR"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);
const untrackedFiles = parseGitFileList(
execFileSyncImpl("git", ["ls-files", "--others", "--exclude-standard"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);

return [...new Set([...trackedFiles, ...stagedFiles, ...untrackedFiles])].sort();
}
Comment on lines +206 to +213
if (require.main === module) {
const args = process.argv.slice(2);

try {
const result = validateRepoIdentity({ check: args.includes("--check") });
if (!result.valid) {
process.exitCode = 1;
}
Comment thread .lychee.toml
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 155 out of 159 changed files in this pull request and generated 3 comments.

Comment on lines +120 to +124

// The package id is a valid Unity/OpenUPM identifier and must not be treated as repo identity.
if (value === ALLOWED_PACKAGE_ID) {
continue;
}
Comment on lines +209 to +213
try {
const result = validateRepoIdentity({ check: args.includes("--check") });
if (!result.valid) {
process.exitCode = 1;
}
Comment on lines +47 to +91
function getTrackedFiles(execFileSyncImpl = execFileSync) {
const output = execFileSyncImpl("git", ["ls-files"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
});

return normalizeToLf(output)
.split("\n")
.map((line) => line.trim())
.filter((line) => line.length > 0);
}

function parseGitFileList(output) {
return normalizeToLf(output)
.split("\n")
.map((line) => line.trim())
.filter((line) => line.length > 0);
}

function getRepositoryCandidateFiles(execFileSyncImpl = execFileSync) {
const trackedFiles = parseGitFileList(
execFileSyncImpl("git", ["ls-files"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);
const stagedFiles = parseGitFileList(
execFileSyncImpl("git", ["diff", "--cached", "--name-only", "--diff-filter=ACMR"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);
const untrackedFiles = parseGitFileList(
execFileSyncImpl("git", ["ls-files", "--others", "--exclude-standard"], {
cwd: repoRoot,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"]
})
);

return [...new Set([...trackedFiles, ...stagedFiles, ...untrackedFiles])].sort();
}
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/stuck-job-watchdog.yml
Comment thread .github/workflows/release.yml
Comment thread .devcontainer/Dockerfile
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8339cec. Configure here.

Comment thread .github/workflows/unity-benchmarks.yml
Eli Pinkerton (wallstop) and others added 16 commits May 29, 2026 19:36
Fix all CRITICAL/HIGH/MEDIUM/LOW findings from the 72/100 review of the
unity-benchmarks perf-doc auto-update:

- CRITICAL-1: render a Prettier-aligned table and run managed Prettier
  --write before diff/commit so the auto-PR is GREEN on the required
  markdown-json.yml format:md:check gate; add the missing AUTOGENERATED
  marker block to docs/architecture/performance.md (the committed doc had
  no markers, so the renderer threw).
- CRITICAL-2: blocksEquivalent compares only table-row cells (trimmed,
  alignment-insensitive) and ignores the provenance/commit line, so a
  changed SHA or Prettier alignment no longer churns a PR; rendered output
  is byte-stable run-to-run.
- HIGH-1: replace hand-rolled git + force-with-lease with
  stefanzweifel/git-auto-commit-action@v7 (force-push to the bot-owned
  auto/perf-doc-update branch), eliminating the 2nd-run stale-info failure.
- MEDIUM-1: least-privilege top-level permissions (contents: read); grant
  contents/pull-requests write only on update-perf-doc.
- MEDIUM-2: gate update-perf-doc on the LATEST version's per-leg success
  markers (editmode + playmode), so older-version flakiness no longer
  blocks the latest-version doc update.
- LOW-1: locateMarkers throws unless exactly one BEGIN/END pair exists.
- LOW-2: perf-numbers-check requires the auto-maintained N/A reference to
  mention performance.md or unity-benchmarks.

Tests: rewrite render-perf-doc.test.js + add a perf-doc auto-update
contract to unity-workflow-shape.test.js with regression guards that fail
on the old behavior (compact pipes, commit-churn, force-with-lease,
over-broad perms, all-legs gating).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…000 il2cpp, perf auto-update

Completes the adversarially-reviewed CI fix set on top of 97dd630 (4101 tests green).

- A: reword empty workflow-expression in verify-unity-results action comment (it broke the verify step on all 9 Unity jobs); add empty-expression policy guard.
- B: mark shipped Editor/Analyzers dependency .meta files excluded-from-all-platforms so Roslyn deps are not Unity precompiled assemblies (fixes 2021 'Multiple precompiled assemblies'); categorical, SetupCscRsp.cs untouched.
- C: guard editor-only test with '#if UNITY_EDITOR' (fixes 2022 standalone CS0246); add all-platforms-UnityEditor policy guard (hardened for OR-with-runtime-symbol).
- D: ensure-editor.ps1 sidesteps a non-Hub-manageable 6000 editor via atomic in-place module reinstall; version-scope the stale-process sweep (no cross-version collateral kill); profile-aware stall threshold; honest runner-side residual.
- Perf: unity-benchmarks auto-updates performance.md from the latest Unity version (prettier-stable, idempotent, create_branch for rerun safety); perf-numbers gate gains an N/A auto-maintained escape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, standalone)

Multi-agent CI fix effort, validated by `npm run preflight` (green). Includes:
- Analyzer single-registration: Editor/Analyzers/*.dll.meta Editor-disabled +
  RoslynAnalyzer-labeled; SetupCscRsp effective Editor-disable; harness diagnostic
  asserts the Editor-excluded state. Fixes Unity 2021 "Multiple precompiled
  assemblies with the same name".
- Log-flood gate in MessagingTestBase (DXM_TEST_VERBOSE_LOG, default off).
- Standalone IL2CPP split-build + file-based results (run-ci-tests.ps1 +
  generated build modifier / test callback + tree-kill watchdog).
- Perf: delete perf-numbers-check.yml PR-body gate + new perf-numbers.yml.

Post-review fixes (standalone timeout-honors-file, perf merge-block rework,
analyzer meta :Any block, player.log diagnostic) follow in the next commit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rf merge-block rework, analyzer :Any block, player.log diagnostic)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…+ master-commit jobs)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…esults delete

Re-review round-2 MAJOR finding: 7 prose/comment locations still described the
removed merge-blocking branch-push. Reworded to the implemented mechanism (PR ->
non-blocking sticky comment; push to master -> commit) across perf-numbers.yml,
unity-benchmarks.yml, pull_request_template.md, docs/architecture/performance.md,
.llm/skills/performance/dispatch-hot-path.md, unity-workflow-shape.test.js.
Re-review minor: run-ci-tests.ps1 deletes any stale results.xml before the
standalone player runs (timeout-honors-file can only honor THIS run's results).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

Dispatch throughput (Unity 6000.3.16f1, ELI-MACHINE)

Regenerated by CI from this branch (run logs). These numbers MOVED versus the committed doc; they are committed to master automatically when this PR merges.

Latest CI benchmark run: Unity 6000.3.16f1, commit 09be4cb6de906f0cbdfdf13ea78e933808d5ecd8.

Platform: Editor Mono x64 Development (WindowsEditor; Unity 6000.3.16f1).

Scenario Throughput / Wall clock Allocated bytes
UntargetedFlood_OneHandler 13.11 M emits/sec 0 B
UntargetedFlood_FourHandlers_OnePriority 2.58 M emits/sec 0 B
UntargetedFlood_FourHandlers_FourPriorities 2.83 M emits/sec 0 B
TargetedFlood_OneListener 7.20 M emits/sec 0 B
TargetedFlood_SixteenListeners 0.42 M emits/sec 0 B
BroadcastFlood_OneHandler 5.82 M emits/sec 0 B
InterceptorHeavy_FourInterceptors 2.56 M emits/sec 0 B
PostProcessingHeavy_FourPostProcessors 2.10 M emits/sec 0 B
RegistrationFlood_1000Types_FromColdBus 21.035 ms 0 B

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.

2 participants