Repository navigation
fix: v1.0.3 Unity partial-class messages, Unity notes, MCP/Windows hardening - #26
Merged
Merged
Conversation
…s; MCP/Windows hardening (v1.0.3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the false positives and install problems from a real run of plumb 1.0.2 on
Assets/UYF(private repo). Not released, not tagged, version still 1.0.2; the CHANGELOG has an[Unreleased]1.0.3 entry.Per item
Every test below was written first and run against 1.0.2 behaviour (plus a stub where the new API had to exist to compile). Failure reasons are quoted from the output.
P0: Unity messages on
partialclassesunity_partials::partial_messages_are_entry_points_when_any_part_declares_a_unity_base. It failed withfalse positive Blob.LateUpdate, and the list also heldBlob.OnDisable,AutoTest.FixedUpdate,Hero.LateUpdate.partial class Blob { void LateUpdate() }) never looks like a Unity class.unitycolumn on symbols).Assets/root, follows the base chain through classes in the index (Hero : CharacterBase : MonoBehaviour), and makes all parts live.dead-code --verboseprintsdebug: unity-message@partial-merged ...(also in JSON asnotes; testpartial_merge_leaves_a_debug_noteand CLI testdead_code_verbose_prints_unity_partial_merge_notes).cargo test -p plumbgraph-core --test unity_partials.P0b: private non-message helpers stay reportable
unreferenced_private_helpers_on_a_monobehaviour_are_still_reported(Net.LocalPortString,Net.NetExtraDeadHelper,Blob.BlobDeadHelper).Net.LocalPortStringismedium0.71 because of the existing 0.25 "method of a class with a base type" penalty. That is above the default 0.70 cutoff but not by much. I did not change that penalty.P1: plain class
Update(float dt)plain_class_update_is_not_an_engine_callback.TasterState), ordinary*Update*names and same-fileMonoBehaviour.Update, 1.0.2 was already right. These are regression guards that passed before the change.Assets/(DerivedState : PlainBase). Failure:missing DerivedState.Update. 1.0.2 treated any non-interface base underAssets/as possibly Unity.mainis not special-cased anywhere new.Editor
editor_bases_and_attributes. It failed withfalse positive Wizard.OnWizardCreate.ScriptableWizardis an editor base, andOnWizardCreate/Update/OtherButtonare messages.[MenuItem],[InitializeOnLoad],[InitializeOnLoadMethod],[RuntimeInitializeOnLoadMethod],EditorandEditorWindow(including a partial window) were already handled; the test pins them.Startup.UnrelatedStaticHelperis still reported.Severity
unresolved_host_type_is_medium_with_a_reason_never_high. It failed becauseMystery.Updatewas not reported at all (silently live).unity-message-name-but-host-type-unresolved.P1 docs / P3 footer
docs/PACKS.mdnow covers partial messages (removed from "Not covered" for messages), the editor rules, and a Unity gaps table: scenes/prefabs/UnityEvents, string SendMessage/Invoke (low confidence only), animation events, Addressables/Resources.Load, scip-dotnet opt-in, multi-asmdef.unity_pack_footer_notes_when_indexing_under_assetsand CLIdead_code_prints_unity_footer_under_assets. They failed first because the notes were absent. The notes appear only when C# files underAssets/are indexed.plumb dead-code --helplinksdocs/PACKS.md#unity-c(CLI testdead_code_help_links_the_unity_pack_limitations, failed first).P2 Windows / MCP
mcp_startup_line_on_stderr_has_version_and_pidand thestartup_line_has_version_and_pidunit test failed first (the old line had neither). It is nowplumbgraph MCP server v<ver> pid=<pid> (stdio) root=... allow_exec=....serverInfo.version: 1.0.2 already sent it. I added the missing assertion inhandshake_and_list, which passed immediately.plumb doctorwarning:providers::overwrite_warning(exe, probe), platform independent and tested intests/self_overwrite.rs; two of the three tests failed against a stub.#[cfg(windows)]only.docs/MCP.md: stop MCP hosts beforecargo installon Windows (or use--root), and pointplumb mcp --rootat the current workspace repo.Verification
scripts/verify.shexits 0 (fmt, clippy-D warnings, 209 tests, test-integrity, dogfoodplumb verify ., cargo-deny, cargo-audit).plumb weakening --base origin/main: 0 findings.plumb dead-codeongrloper/use-your-friends@43b8a8e:Blob.LateUpdateBlob.OnDisableAutoTest.FixedUpdateNet.LocalPortStringTasterState.UpdateTotal findings 19 to 16.
Not tested / caveats
Assets/whose only base is outside the index (e.g. a DLL base class) used to be silently live. It is now reported as MEDIUM with the unresolved reason, as the spec asks. This can add noise on projects that use third-party base classes.Assets/root. Namespaces and.asmdefassemblies are not told apart.cfg(windows)doctor probe and its output were not compiled or run on Windows (no Windows target here); only the platform-independent logic is tested.cargo installfile-lock behaviour is as reported by the user and documented, not reproduced here.dead_codetool does not exposenotes(the CLI and the core API do).