Skip to content

Feature: More test and Enhanced Documentation#201

Merged
Eli Pinkerton (wallstop) merged 4 commits into
masterfrom
dev/wallstop/more-tests-more-documentation
May 3, 2026
Merged

Feature: More test and Enhanced Documentation#201
Eli Pinkerton (wallstop) merged 4 commits into
masterfrom
dev/wallstop/more-tests-more-documentation

Conversation

@wallstop
Copy link
Copy Markdown
Collaborator

Description

This PR strengthens reliability and developer experience for DxMessaging by expanding automated test coverage, adding benchmark/allocation validation, and clarifying key user-facing docs.

What users will notice:

  • Better stability guarantees from new lifecycle, re-entrancy, leak-detection, and public-surface contract tests.
  • Broader performance and allocation coverage, including new editor benchmark suites and comparison benchmarks.
  • Clearer guidance in docs for MessageAwareComponent inheritance (especially required base.*() calls), troubleshooting, and integrations.
  • New docs prose validation tooling to keep documentation concise and consistent over time.

Related Issue

Fixes #

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactor (code change that neither fixes a bug nor adds a feature)

Checklist

  • All tests pass locally
  • Code is properly formatted
  • I have added tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have updated the CHANGELOG
  • My changes do not introduce breaking changes, or breaking changes are documented

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 expands DxMessaging reliability and developer ergonomics by strengthening test/benchmark coverage, hardening the MessageAwareComponent base-call contract (runtime + analyzer + inspector overlay messaging), and adding prose validation tooling to keep documentation consistent.

Changes:

  • Add new runtime/editor tests and benchmarking assemblies, including leak-detection utilities and public-surface contract snapshotting.
  • Enhance MessageAwareComponent base-call enforcement (per-method DXMSG006 consequence text, inspector overlay consequence rendering, and a one-time runtime self-check breadcrumb).
  • Add and wire documentation prose validation tooling (custom validator + Vale rules/config) and update docs to emphasize required base.*() calls.

Reviewed changes

Copilot reviewed 126 out of 132 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
scripts/validate-docs-prose.js.meta Unity .meta for prose validator script
scripts/tests/validate-docs-prose.test.js.meta Unity .meta for prose validator Jest test
llms.txt Update skills count, add unity category, bump last-updated date
docs/reference/troubleshooting.md Add OnDestroy base-call note + quickstart link
docs/reference/faq.md Add FAQ entry for missing base-call symptoms (DXMSG006)
docs/reference/analyzers.md Expand DXMSG006 docs with per-method messages + updated guarded-method rationale
docs/integrations/zenject.md Refine Zenject overview wording
docs/integrations/index.md Clarify supported DI frameworks and integration guidance
docs/guides/patterns.md Minor prose tightening + more specific scalability example
docs/guides/inspector-overlay.md Prose tightening + “Related” section formatting
docs/getting-started/visual-guide.md Add base-call warning callout + copy tweaks
docs/getting-started/quick-start.md Add “Inheritance and base calls” section with guarded-method table
docs/getting-started/install.md Clarify prerelease package wording
docs/getting-started/index.md Refine doc hub link text and descriptions
docs/getting-started/getting-started.md Add base-call warning and cross-links
docs/concepts/index.md Refine “Message Types” description
docs/architecture/performance.md Update benchmark numbers table
docs/architecture/comparisons.md Update comparison numbers + minor Zenject bullet wording
docs/advanced/runtime-configuration.md Refine testing guide link description
docs/advanced/message-bus-providers.md Replace “best of both worlds” with concrete behavior description
docs/advanced/emit-shorthands.md Shorten “Targeting & Context” link description
Tests/Runtime/TestUtilities/MessageScenarios.cs Add WithAtLeastOneFeatureToggle scenario source
Tests/Runtime/TestUtilities/LeakWatcher.cs.meta Unity .meta for LeakWatcher utility
Tests/Runtime/TestUtilities/LeakWatcher.cs Add LeakWatcher registration-counter snapshot utility
Tests/Runtime/Scripts/Messages/ClassTargetedMessage.cs.meta Unity .meta for class targeted message fixture
Tests/Runtime/Scripts/Messages/ClassTargetedMessage.cs Add class-based targeted message type for tests
Tests/Runtime/Scripts/Messages/ClassBroadcastMessage.cs.meta Unity .meta for class broadcast message fixture
Tests/Runtime/Scripts/Messages/ClassBroadcastMessage.cs Add class-based broadcast message type for tests
Tests/Runtime/Scripts/Components/QuitOnDemandMessageAwareComponent.cs.meta Unity .meta for quit-hook test component
Tests/Runtime/Scripts/Components/QuitOnDemandMessageAwareComponent.cs Add component to invoke protected OnApplicationQuit in tests
Tests/Runtime/Scripts/Components/BaseCallContractComponents.cs.meta Unity .meta for base-call contract fixtures
Tests/Runtime/Scripts/Components/BaseCallContractComponents.cs Add components that intentionally violate base-call contract for runtime symptom tests
Tests/Runtime/Core/TestAttributeContractTests.cs Expand contract tests (parameterization mixing, spawned cleanup pattern, setup-fixture uniqueness, scenario ValueSource enforcement)
Tests/Runtime/Core/SuiteWallClockBudgetTest.cs.meta Unity .meta for suite wall-clock budget fixture
Tests/Runtime/Core/SuiteWallClockBudgetTest.cs Add suite-level wall-clock budget with gated-category bypass
Tests/Runtime/Core/Snapshots/public-surface.txt.meta Unity .meta for public-surface snapshot file
Tests/Runtime/Core/Snapshots/public-surface.txt Add snapshot of public DxMessaging.Core type set
Tests/Runtime/Core/Snapshots/.gitkeep Keep Snapshots folder in source control
Tests/Runtime/Core/Snapshots.meta Unity folder .meta for Snapshots directory
Tests/Runtime/Core/ReentrantEmissionExtendedTests.cs.meta Unity .meta for reentrancy extended tests
Tests/Runtime/Core/PublicSurfaceContractTests.cs.meta Unity .meta for public-surface contract tests
Tests/Runtime/Core/PublicSurfaceContractTests.cs Add public-surface snapshot test + IMessageBus textual mention test + MessageKind coverage check
Tests/Runtime/Core/MessageHandlerGlobalBusTests.cs Update wrapper bus to expose new registration counters
Tests/Runtime/Core/LifecycleEdgeCasesTests.cs.meta Unity .meta for lifecycle edge-case tests
Tests/Runtime/Core/LeakWatcherSelfTests.cs.meta Unity .meta for LeakWatcher self-tests
Tests/Runtime/Core/LeakWatcherSelfTests.cs Add LeakWatcher self-tests parameterized by MessageScenario
Tests/Runtime/Core/BaseCallContractTests.cs.meta Unity .meta for base-call contract runtime tests
Tests/Editor/Comparisons/WallstopStudios.DxMessaging.Tests.00.Editor.Benchmarks.asmdef.meta Unity .meta for editor comparisons asmdef
Tests/Editor/Comparisons/WallstopStudios.DxMessaging.Tests.00.Editor.Benchmarks.asmdef Add editor comparisons asmdef (depends on benchmarks + integrations)
Tests/Editor/Comparisons/ComparisonPerformanceTests.cs.meta Unity .meta updated for comparison performance test
Tests/Editor/Comparisons/ComparisonPerformanceTests.cs Move comparison perf tests to editor namespace/assembly and update imports/guards
Tests/Editor/Comparisons.meta Unity folder .meta for Comparisons
Tests/Editor/Benchmarks/WallstopStudios.DxMessaging.Tests.00.Editor.Benchmarks.asmdef.meta Unity .meta for editor benchmarks asmdef
Tests/Editor/Benchmarks/WallstopStudios.DxMessaging.Tests.00.Editor.Benchmarks.asmdef Rename/move benchmarks asmdef to editor benchmarks
Tests/Editor/Benchmarks/PerformanceTests.cs.meta Unity .meta for editor performance tests
Tests/Editor/Benchmarks/PerformanceTests.cs Move performance tests to editor benchmarks namespace + fix imports
Tests/Editor/Benchmarks/BenchmarkTestBase.cs.meta Unity .meta updated for benchmark base
Tests/Editor/Benchmarks/BenchmarkTestBase.cs Move benchmark base to editor benchmarks namespace + update imports
Tests/Editor/Benchmarks/BenchmarkSession.cs.meta Unity .meta updated for benchmark session
Tests/Editor/Benchmarks/BenchmarkSession.cs Move benchmark session to editor benchmarks namespace
Tests/Editor/Benchmarks/AssemblyInfo.cs.meta Unity .meta for editor benchmark AssemblyInfo
Tests/Editor/Benchmarks/AssemblyInfo.cs Add InternalsVisibleTo for test assemblies
Tests/Editor/Benchmarks.meta Unity folder .meta for Benchmarks
Tests/Editor/Allocations/WallstopStudios.DxMessaging.Tests.Editor.Allocations.asmdef.meta Unity .meta for editor allocations asmdef
Tests/Editor/Allocations/WallstopStudios.DxMessaging.Tests.Editor.Allocations.asmdef Add editor allocations asmdef
Tests/Editor/Allocations/ProviderResolutionBenchmarks.cs.meta Unity .meta updated for provider resolution benchmarks
Tests/Editor/Allocations/ProviderResolutionBenchmarks.cs Move provider benchmarks to editor allocations namespace + reference benchmark helpers
Tests/Editor/Allocations/BenchmarkHarnessRobustnessTests.cs.meta Unity .meta updated for harness robustness tests
Tests/Editor/Allocations/BenchmarkHarnessRobustnessTests.cs Move harness robustness tests to editor allocations namespace + fix imports
Tests/Editor/Allocations/AllocationMatrixTests.cs.meta Unity .meta updated for allocation matrix tests
Tests/Editor/Allocations/AllocationMatrixTests.cs Move allocation matrix tests to editor allocations namespace + add references
Tests/Editor/Allocations/AllocationMatrixExtendedTests.cs.meta Unity .meta for extended allocation matrix tests
Tests/Editor/Allocations/AllocationMatrixExtendedTests.cs Add extended allocation/allocation-budget tests (class messages, feature cross-product, churn, accept-all budgets)
Tests/Editor/Allocations.meta Unity folder .meta updated for Allocations
SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/MessageAwareComponentBaseCallAnalyzerTests.cs Expand analyzer test coverage (DXMSG007 across all guarded methods, DXMSG006 per-method message checks, meta-tests, parity tests)
SourceGenerators/WallstopStudios.DxMessaging.Analyzer/Analyzers/MessageAwareComponentBaseCallAnalyzer.cs Add per-method DXMSG006 consequence messages, guarded-set expansion, and bool-signature handling
Samples~/Mini Combat/Walkthrough.md Update link description wording
Runtime/Unity/MessageAwareComponent.cs Add editor/debug one-time runtime self-check log in OnEnable when token is null
Runtime/Core/MessageBus/MessageBus.cs Add public counters for interceptors/post-processors/global accept-all
Runtime/Core/MessageBus/IMessageBus.cs Document empty-bus emit contract + add new registration counters to public interface
Runtime/Core/DataStructure/CyclicBuffer.cs Reduce enumerator/getter visibility to internal
README.md Add base-call warning callout + refine positioning language + update AI agent section wording
Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs Render per-method consequence lines in HelpBox + ASCII ellipsis fix
Editor/Analyzers/BaseCallTypeScannerCore.cs Extend guarded method list + add per-method consequence dictionary + bool-signature lookup helper
CLAUDE.md Remove duplicated rule list (now points to .llm/context.md only)
CHANGELOG.md Add release notes for per-method DXMSG006 messaging, runtime self-check, and new IMessageBus counters
AGENTS.md Remove duplicated rule list (now points to .llm/context.md only)
.vale/styles/Vocab/DxMessaging/reject.txt Add reject vocabulary list for Vale
.vale/styles/Vocab/DxMessaging/accept.txt Add accept vocabulary list for Vale
.vale/styles/DxMessaging/Marketing.yml Add Vale rule to flag marketing adjectives
.vale/styles/DxMessaging/LLMFiller.yml Add Vale rule to flag LLM filler phrases
.vale/styles/DxMessaging/Hedges.yml Add Vale rule to flag hedge transitions
.vale/styles/DxMessaging/Capitalization.yml Add Vale rule to enforce canonical capitalization (e.g., GitHub)
.vale.ini Add Vale configuration and file-scoped rule tuning
.pre-commit-config.yaml Add validate-docs-prose hook invoking scripts/validate-docs-prose.js
.llm/skills/unity/base-call-contract.md Add new skill doc describing base-call contract + enforcement layers
.llm/skills/testing/tests-must-be-parameterized-by-message-kind.md Update links + add related lifecycle/leak-watcher skills
.llm/skills/testing/test-production-code-part-2.md Rename link text to “Test Coverage Requirements”
.llm/skills/testing/test-failure-investigation.md Tighten wording to be more specific/actionable
.llm/skills/testing/test-failure-investigation-procedure.md Rename section heading to “Fix the Root Cause”
.llm/skills/testing/test-coverage-unity-anti-patterns.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/test-coverage-scenario-categories.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/test-coverage-organization-assertions.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/test-coverage-data-driven.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/test-code-quality.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/single-thread-contract.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/script-test-coverage.md Tighten prose guidance + update link text
.llm/skills/testing/lifecycle-edge-coverage.md.meta Unity .meta for lifecycle-edge coverage skill
.llm/skills/testing/lifecycle-edge-coverage.md Add new skill doc for lifecycle edge-case test coverage
.llm/skills/testing/leak-watcher-usage.md.meta Unity .meta for leak-watcher usage skill
.llm/skills/testing/leak-watcher-usage.md Add new skill doc for LeakWatcher usage and counter contract
.llm/skills/testing/inspector-overlay-invariants.md Add “See Also” link to base-call contract skill
.llm/skills/testing/git-workflow-robustness.md Tighten prose/clarify scope
.llm/skills/testing/git-workflow-robustness-part-1.md Update link text to “Test Coverage Requirements”
.llm/skills/testing/comprehensive-test-coverage.md Rename/title tweak to “Test Coverage Requirements” + reduce marketing language
.llm/skills/testing/allocation-coverage-required-for-dispatch.md Update link text to “Test Coverage Requirements”
.llm/skills/scripting/validation-patterns-part-2.md Update link text to “Test Coverage Requirements”
.llm/skills/scripting/powershell-best-practices-part-2.md Tighten prose
.llm/skills/scripting/javascript-code-quality-part-2.md Update link text to “Test Coverage Requirements”
.llm/skills/scripting/cross-platform-compatibility.md Tighten one-line summary + update link text
.llm/skills/performance/cache-eviction-policies.md Tighten one-line summary wording
.llm/skills/index.md Regenerate skills index (counts/categories updated)
.llm/skills/documentation/human-prose-policy.md Add new human-prose policy skill doc
.llm/context.md Add explicit guidance for prose validation, base-call contract, lifecycle edge cases, LeakWatcher usage, and benchmark assembly conventions
.cspell.json Add new words/abbreviations used in tests/docs

Comment thread Editor/Analyzers/BaseCallTypeScannerCore.cs
Comment thread Tests/Runtime/Core/TestAttributeContractTests.cs
Comment thread Tests/Runtime/Core/TestAttributeContractTests.cs
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 168 out of 174 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

Tests/Editor/Comparisons/ComparisonPerformanceTests.cs:19

  • The file has unconditional using MessagePipe;, using UniRx;, and using Zenject; directives, plus now-empty #if UNIRX_PRESENT / #if MESSAGEPIPE_PRESENT blocks. This will fail to compile when those optional packages are not present (the using directives are processed even when the benchmark methods are #if-guarded). Move these using directives back under their corresponding #if ..._PRESENT blocks (and delete the empty blocks), or avoid the using directives and fully-qualify the types inside the #if regions.

Comment thread scripts/run-staged-validators.js
Comment thread .vale.ini Outdated
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 176 out of 182 changed files in this pull request and generated 1 comment.

Comment thread scripts/lib/staged-doc-formatters.js
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.

@wallstop Eli Pinkerton (wallstop) merged commit 25a4dcc into master May 3, 2026
36 checks passed
@wallstop Eli Pinkerton (wallstop) deleted the dev/wallstop/more-tests-more-documentation branch May 3, 2026 19:36
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