You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Investigate OOM during console settings asset scans #613
A retained native crash log from 2026-10-01 06:43 UTC confirms a Unity 6000.5.2f1 OOM in a consumer project using registry DxMessaging 3.3.0. The failing managed call is DxMessagingConsoleHarvester.TryLoadSettings at line 956 of the cached package. It calls the unscoped AssetDatabase.FindAssets settings query from RescanNow/Tick.
Evidence from the retained crash report:
Unity failed to allocate 3,671,471 bytes with the Default memory label.
Default native allocations were 5,506,671,736 bytes; graphics allocations were 982,909,496 bytes.
Asset garbage collection repeatedly recovered about 6 KB while reported consumption remained near 5.51 GB.
The native stack runs through GlobalResolverCacheTxn::FindAssetCachedInfo, AssetResolver::GetAssetCachedInfo, and AssetDatabasePropertyV2::FetchAssetMetaInfo before the settings query.
The current default-branch Editor/Analyzers/DxMessagingConsoleHarvester.cs still calls AssetDatabase.FindAssets in TryLoadSettings.
This proves the failing operation, not the source of prior memory growth. Do not reproduce exhaustion in a shared editor or treat a managed catch as protection from Unity's native fatal allocation failure. Raw logs and the dump remain on the host; they contain licensing data and must not be uploaded unchanged.
Investigate whether repeated settings lookups cause asset metadata growth. Compare a cached settings lookup (including cached absence) with the current scan under bounded, project-scale sampling. Invalidate on relevant settings creation, move, delete, modification and domain reload; preserve passive lookup and never create assets from compilation callbacks. Record counters for queries and rescans, memory trend, project size, Unity version, and other active workloads.
Acceptance:
Establish a bounded reproduction or explicitly identify the remaining unknown cause.
A steady-state harvester does not repeat project-wide settings searches when nothing relevant changed.
Settings changes and absent-to-present transitions still apply without a reload.
Compile/import callbacks remain passive, deferred and nonrecursive.
Publish paired bounded measurements and regression tests, with sanitized crash provenance.
Found while investigating the Unity Helpers GOAL.md memory-safety request; related Unity Helpers issues #818 and #648.
Current default branch 916f0d7db71532168a27d09d579bfe9a6c8f3897 performs a project-wide FindAssets(t:DxMessagingSettings) on every harvester rescan. Its shared passive loader also repeats fallback searches when the canonical asset is absent. This is the reproducible search-amplification defect; the retained crash does not prove that this query caused the preceding ~5.51 GB native memory growth.
Hypothesis: sharing a passive lookup cache, including cached absence, removes repeated searches between relevant asset changes while preserving settings discovery and application. RED: repeated unchanged lookups issue repeated queries; a stale miss ignores a later settings asset if cache invalidation is omitted. GREEN: one fallback query per stable revision, zero AssetDatabase mutation from passive lookup, live settings edits, destroyed-object recovery, create/move/delete/import invalidation, and deferred idle rescans independent of LogEntries availability.
Implementation will retain domain-local lookup/search/rescan counters. Import callbacks will invalidate and request deferred work without querying/loading/creating assets inside the callback. Settings OnValidate will signal invalidation without adding asset operations. Use Unity's four-argument OnPostprocessAllAssets callback for the supported 2021.3 floor; projectChanged alone misses hidden assets.
Bounded editor measurement plan: record Unity version, project asset count, active workloads, memory and query/rescan counters; run four counterbalanced blocks of 64 uncached legacy lookup calls and 64 cached passive calls (ABBA/BAAB), separately for available hit/miss environments. Retain every observation; report elapsed time and memory trend descriptively, without claiming OOM causation or independent performance inference. Stop immediately for non-idle editor state, unexpected asset mutation, memory growth >128 MiB within one block, or lookup block >2 seconds; do not induce exhaustion. Do not remove existing user settings to manufacture a missing-asset environment.
Evidence: ignored .artifacts/perf-lab/613-settings-cache/, production-linked deterministic tests, eventual Unity EditMode integration results and bounded paired records. The configured host bridge and documented fallback ports currently have no TCP listener; native/editor measurements will remain pending until a live safe host is available. Work proceeds on codex/613-cache-settings.
Source inspection also found a related rescan-amplification path: Tick reads LogEntries count whenever reflection is available, even with UseConsoleBridge=false. The bridge-disabled scan leaves _lastSeenCount unchanged, so a nonzero count differs on every 250-ms poll and repeatedly runs the IL scanner/settings search. The fix will gate console-count polling on enabled base-call checks plus the console bridge, while keeping settings-revision observation active and routing explicit requests through the existing coalesced idle callback. RED will use the production harvester linked against controlled Unity boundary doubles; this is a managed control-flow proof, with native editor/memory measurements still pending.
Native verification update and bounded follow-up protocol (#613)
The restored MCP bridge reached the real macOS host editor, Unity 6000.4.6f1. Fresh passive preflight proved an inactive framework, idle editor, main stage, and one saved clean scene. Loading the candidate exposed CS0246 for NUnit NonParallelizable, which Unity's NUnit assembly does not provide. That attribute was removed locally; the fixture is run in an isolated maintained-runner scope. Fresh-symbol and DLL/source timestamps then proved the new fixture was loaded.
Native focused settings lookup + settings provider: 22 passed, zero failed/skipped/inconclusive, matching run GUID c8f36793-74db-485a-bc10-a89ba3bf0c5a and terminal raw/cleanup records. Original scene remained clean.
The frozen 64-call measurement stopped on its first legacy A phase: 64/64 settings hits, 64 project-wide searches, 3931.2884 ms. This exceeds the preregistered two-second lookup limit. Working-set growth was 3,817,472 bytes; Unity allocated-memory growth was 22,033,768 bytes. This is an unfavorable, unpaired observation, not an OOM reproduction or causal explanation. All observations are retained. Environment: 31,324 AssetDatabase paths, canonical settings present, absent native environment unavailable without altering existing user settings.
Before another native measurement, change the bounded workload to 8 calls per phase, four blocks ABBA/BAAB/ABBA/BAAB. Preserve both arms, all rows, elapsed and memory observations, and query counts; stop if any phase OR complete counterbalanced block exceeds two seconds, memory grows >128 MiB within a block, or editor/scene state becomes unsafe. This smaller workload was selected after observing the stop; results are descriptive and cannot support an independent confirmatory timing claim. Warm each arm once outside measurement. Do not remove existing settings to manufacture absence.
The next native regression scope will use an owned unique temporary asset folder and the production passive loader with real AssetDatabase delegates restricted to that folder. Cover import after cached absence, deletion to cached absence, individual asset move, and parent-folder move through the actual installed AssetPostprocessor. Keep all existing settings untouched, delete only the owned folder, and verify passive cleanup. These checks supplement the existing controlled callback tests.
Local retained evidence: .artifacts/perf-lab/613-settings-cache/ and .artifacts/unity-mcp/613-native-focused-01.json with GUID/path companions. Static CI already passed all 17 jobs at c0b5890 in run 37578142506. Native compatibility correction is still local and will be included in the review branch after verification. Issue remains open.
Native import regression: all four owned real-AssetDatabase cases passed (import after cached absence, deletion, asset move, parent-folder move). Raw and passive cleanup are terminal with matching GUID affcb8d3-4bb4-488a-bf57-c7462017dd8a; original scene is clean. The smaller preregistered 8-call experiment completed all 16 phases without stopping: A made 64 searches; B made 64 passive calls with zero searches. Native allocated-memory deltas summed to +22,033,000 bytes in A and zero in B; this short sequence does not establish retained-memory causality or explain the historical OOM.
Before accepting callback attribution, run a native negative control: temporarily suppress only the AssetPostprocessor's forwarding call in the embedded package, retain the diff, recompile with fresh-assembly proof, and run the same four native cases. Deletion/move revision assertions must detect missing notification independently of OnValidate. Restore the exact production postprocessor, compile fresh again, then run the affected ordinary Editor scope with the normal category exclusions and the explicit documentation writer excluded. Preserve all control failures; no production threshold or assertion changes. The scratch folder and captured sidecar work are owned by each test and cleaned without altering existing settings.
The review branch is now pushed and its exact remote head verified. Native host Unity 6000.4.6f1 compiled the changed production/test files. The Unity-incompatible NUnit attribute was removed. Real AssetDatabase regressions cover import after cached absence, deletion, asset move, and parent-folder move. Suppressing only the installed production postprocessor forwarding produced three expected native failures (absence, deletion, parent-folder move); restoring it cleared those failures. The affected Editor scope passed 117/117, with zero skips or inconclusive cases and matching terminal raw/passive cleanup records. Focused prior scopes passed 22/22 and 4/4.
The original 64-call experiment stopped at 3931.2884 ms on its first legacy phase. The preregistered eight-call follow-up completed four counterbalanced blocks. A is the original harvester's project-wide FindAssets plus first-GUID load; B is the candidate shared passive lookup. There were 64 project-wide A queries and zero B queries across 64 calls. All paired rows follow; negative memory changes are retained.
Block
Arm
Calls
Elapsed ms
Searches
Working-set delta bytes
Unity allocated delta bytes
GC heap delta bytes
1
A
8
481.3898
8
0
2757336
294912
1
B
8
0.0024
0
0
0
0
1
B
8
0.0002
0
0
0
0
1
A
8
463.8033
8
0
2748328
401408
2
B
8
0.0023
0
0
0
0
2
A
8
476.7225
8
0
2749832
512000
2
A
8
580.2704
8
-5996544
2753720
507904
2
B
8
0.0016
0
-131072
0
0
3
A
8
568.237
8
-17973248
2756384
516096
3
B
8
0.0021
0
0
0
0
3
B
8
0.0004
0
0
0
0
3
A
8
363.7242
8
0
2756392
516096
4
B
8
0.0011
0
0
0
0
4
A
8
544.1961
8
0
2756488
2764800
4
A
8
433.4634
8
16384
2754520
532480
4
B
8
0.0012
0
0
0
0
Elapsed times are descriptive; cached durations are near timer resolution. The eight-call workload was selected after the original stop, and no ratio or independent confidence claim is made. Unity allocated-memory deltas are snapshots, not proof of retained-memory growth. The historical OOM's preceding memory growth remains unknown. No exhaustion was attempted. This macOS project had 31,324 asset paths and existing canonical settings; absence measurements were unavailable without changing existing settings. Idle editor/framework flags were verified, but unrelated background processes remain unmeasured.
Native verification used an owned overlay of exact changed files on the host's older package checkout. Full latest-master shipping-tree, supported Unity floor/matrix and IL2CPP verification remain pending. Broad local sample verification could not install an owned fixture because older existing sample assemblies and GUIDs conflict; those files were preserved. Native cleanup restored the original saved scene. Original embedded files were restored by hash and freshly compiled; the new fixture is absent, no temporary asset folders remain, and console ground truth reports compilationFailed=false and zero errors.
Local manifest SHA-256: fba49822b30203ac492822027abb21e54e1258c3f2015bc43a3f1f1c3946de01. Retained raw result, run identity and cleanup companions are under .artifacts/unity-mcp/613-native-*; controls, raw measurements, requests, source hashes and restoration records are under .artifacts/perf-lab/613-settings-cache/. The eight-call response SHA-256 is 45282c1f696a2a45aec4d47e38da58385a497481984f423e37eb16dbcea729f6. This is retained local evidence and published observation data, not an immutable archive/independent-restore claim. Static CI at the preceding c0b5890 commit passed all 17 jobs; a new static workflow for ae79805 has been dispatched. No licensed Unity CI or #510 calibration was dispatched. Review, durable evidence publication and remaining shipping gates are still required; issue remains open.
Final static gate: CI run 37655961777 completed success at exact pushed head ae79805. All 17 jobs, including CI Success, passed. Raw terminal run/jobs metadata and source identity are retained. No licensed Unity job ran.
The final local evidence manifest SHA-256 is 78f2023c0ce99c52c4c8b01bba62f8b690049d1fb156840bc2fc4117c0d534a2. The earlier fba49822b30203ac492822027abb21e54e1258c3f2015bc43a3f1f1c3946de01 manifest cited above is retained byte-for-byte as evidence-manifest-native-r1.json; subsequent metadata snapshots are additive. These remain local archives, not immutable publication claims. Review title/body are prepared locally. Opening the PR would trigger licensed workflows, so it remains gated by the existing #510 account-level seat reconciliation condition. Supported shipping verification, safe sample fixture preparation, durable evidence publication and maintainer review remain pending.
Full native Editor verification protocol before fixture work
Question: does the exact candidate Unity asset tree at ae79805 pass the ordinary Editor suite, including the shipping sample contracts? Previous native verification passed 117 affected cases; the full suite is unmeasured because existing older Assets/DxMessagingSamples imports conflict with the shipping sample GUIDs/assemblies.
Use the current host Unity 6000.4.6f1 with passive inactive/idle/main-stage/all-scenes-clean preflight. Record every existing sample file and metadata hash outside Assets, then preserve the complete existing sample folder and its root metadata in an owned backup outside Unity import roots. Temporarily unimport that preserved folder, refresh safely, and verify its GUIDs/assemblies are absent before installing a new owned Assets/DxmCiSamples fixture. Copy only shipping C#, asmdef and scene files with their exact original metadata, from the candidate Samples~ tree. Refuse existing fixture paths or duplicate GUIDs/assembly names; no user sample bytes will be overwritten.
Overlay all twelve differing Unity source/meta paths from the candidate onto the embedded package, with original backups/hash checks. The remaining Runtime/Editor/Tests/Samples~ tracked assets are identical to the candidate; preserve unrelated MCP setup edits. Prove fresh fixture and sample assemblies before launching the maintained runner.
Run the complete WallstopStudios.DxMessaging.Tests.Editor assembly with the normal EditMode category exclusions and the explicit documentation PNG writer excluded. Retain every outcome, accept zero failures/inconclusives only after matching GUID/path raw and passive cleanup records. Stop for unsafe editor/scene state, conflicting GUIDs/assemblies, unexpected file changes or compilation errors; observation timeout alone does not authorize a new test launch. Fix an observed failure at its cause rather than changing assertions or accepting fixture skips.
After cleanup, remove only unchanged owned fixture files, restore every original imported sample file/root metadata and embedded source by hash, refresh and verify fresh original assemblies plus clean scenes. Keep unexpected changes for review. Retain inventory, ownership, compiler/source identity, result and restoration artifacts under ignored .artifacts/perf-lab/613-full-editor/. This is local Mono/editor coverage, not supported-version matrix or IL2CPP performance proof.
Fixture admission correction before copying any samples: the preserved folder's three sample assemblies unload, but GUIDToAssetPath retains deleted path entries. Native inspection across all 19 shipping compile/scene assets found no file on disk, no OnlyExistingAssets GUID, and no loaded main asset at any retained path. This is a retired entry rather than a live duplicate.
Unity documents that removed GUIDs remain until editor closure and provides AssetPathToGUID(..., OnlyExistingAssets) to distinguish current assets: https://docs.unity3d.com/ja/current/ScriptReference/AssetDatabase.AssetPathToGUID.html . Refine the owned fixture's duplicate check to accept a retained path only when it belongs to the exact inventoried/preserved original folder and all three native/disk existence checks are negative. Continue refusing any existing imported asset, loaded assembly, destination, or unexpected original hash. Retain the initial refused installation and the classification evidence. No test assertions or pass thresholds change.
Correction to the preceding admission note: the initial inspection snippet tried to compare missing original file bytes before checking existence, so it failed without emitting its 19-row result. The absence/OnlyExistingAssets/loaded-object classification is not yet proven. I am adding the missing existence guard and rerunning inspection before accepting any fixture installation. The installer remains stopped; no shipping sample has been copied.
Full native Editor result and durable replay preparation
At exact candidate Unity assets ae79805, the complete ordinary Editor assembly passed 975/975 on Unity 6000.4.6f1: zero failed, skipped or inconclusive cases, duration 53.0997109 seconds. The usual category exclusions and explicit documentation PNG-writer exclusion remain in place. All 13 SampleQualityContractTests cases passed, including imported scene execution and ownership/diagnostics cleanup. Run GUID cd2b4d92-972e-4bb8-a2a8-395f6a951f91 has terminal raw/passive cleanup, matching identity/path, inactive framework and the original clean saved scene.
The guarded GUID inspection now completed all 19 rows and confirmed no current disk asset/OnlyExistingAssets GUID/loaded main object at the retired paths. The fixture copied 38 exact shipping files; metadata and GUID resolution matched, all four sample assemblies compiled fresh. After testing, the unchanged owned fixture was archived outside import roots. All 43 original user sample files and their root metadata were restored and matched their pre-work hashes. All twelve differing package paths were restored; the original assembly compiled fresh, the new fixture disappeared, and console ground truth has no compilation failure or errors. Unrelated existing MCP setup edits remain untouched.
Next question, before implementing a publication adapter: can the existing immutable evidence-bundle tool reproduce this editor-only lookup characterization from sanitized raw measurements and native result/cleanup records? Its current four reducers do not accept this domain. Add a native editor settings replay within the existing tool, with no new CLI, rather than relabeling these observations as Standalone throughput or a lifecycle trace. Keep the fixed JS budget; move the existing fixed matrix/allocation test data into JSON fixtures, retaining byte-identical generated inputs and all assertions.
RED: the existing tool rejects the editor-settings characterization reducer; new rejection cases must detect changed source identity, inconsistent native leaf counts, active/dirty cleanup, missing artifacts, altered control failures, missing stopped baseline, counterbalance/call-count/search-count errors and malformed measurements. GREEN: replay the retained 64-call stopped observation, all sixteen 8-call phases, positive native runs and the three intentional notification-control failures; derive counts and descriptive memory deltas from raw data. Retain negative deltas and near-resolution timings. Add no ratio, interval, OOM causality or supported-matrix claim. Verify prior reducers unchanged, scanner admission, archive integrity and independent immutable retrieval before marking publication durable. Stop for schema ambiguity, privacy findings, byte/replay mismatch or budget growth. Evidence remains in ignored .artifacts/perf-lab/613-full-editor/ and 613-settings-cache/. Supported Unity matrix/IL2CPP and human review still remain.
The full ordinary WallstopStudios.DxMessaging.Tests.Editor suite passed 975/975 leaves in Unity 6000.4.6f1 on macOS 27.0.1, with zero failed/skipped/inconclusive cases, including all 13 imported SampleQualityContractTests. Run GUID cd2b4d92-972e-4bb8-a2a8-395f6a951f91; duration 53.0997109 seconds. This followed the preregistration in comment 6042881597 and result/replay protocol in comment 6043352926.
The final run imported the exact candidate tracked Unity tree at ae79805245bc2fbcbf3479354260bb1908b08899 and an owned shipping sample fixture. The original 43 sample files plus root metadata, all 12 overlaid package paths, and the clean saved original scene were restored. Fresh original assembly, new fixture absent, no scratch folders, and no console compilation failures/errors were verified. A fresh passive MCP check at 18:38 UTC still reports ready, stopped, not compiling/reloading, and the clean original scene. The six pre-existing unrelated MCP setup edits remain untouched.
Immutable evidence revision 1 retains 70 declared files: all five native result/run/status/cleanup sets, the three expected negative-control failures, the stopped 64-call A phase, all 16 separately preregistered 8-call followup phases, requests, source/freshness/sample/scene/restoration observations, and earlier import refusals. The stopped baseline remains unpaired. Followup counters reproduce 64 legacy searches and zero searches from 64 cached calls. Signed live-memory changes remain descriptive; no speedup ratio, interval, allocation-recorder, leak, OOM-cause or player claim.
The authenticated repository setting read enabled: true. Complete draft inventory and remote download were verified before publication. The published response reports draft: false, prerelease: true, immutable: true; its tag resolves to the exact verifier commit. A fresh SSH verifier clone with npm ci --ignore-scripts downloaded the published asset into a new directory, checked full archive/manifest hashes and safe complete inventory, and ran production verify and replay, both exit 0 with identical normalized output and clean checkout. All 12 original source hashes matched a separate measured-source checkout, including the one privacy-scrubbed excerpt. Isolated invalid authentication against this actual required asset returned HTTP 401 and retrieval exit 1; no fallback, and that context remained incomplete. No license-bearing historical crash log was published.
The existing framework now has editor-settings-cache-v1; structure uses the existing JSON Schema dependency and semantic checks retain source identity, chronology, native leaf/count agreement, exact control failure set, cleanup ownership/state, stopping rules and counters. Missing/malformed/altered inputs fail. Fixed data moved to JSON while preserving all existing assertions and byte-identical matrix inputs. Local 1,368 Node tests plus both archive tests, repository validation, spelling/format/Markdown and hooks pass. Static CI 37666819976 passed all 17 jobs at exact verifier f90dca2f, including Linux/macOS/Windows script tests. The JavaScript ceiling is unchanged.
Supported shipping Unity/player gates, integration and maintainer review remain pending. Earlier focused runs used selected overlays; only the full run used the complete candidate Unity tree. The prior memory-growth cause remains unknown. #510 still has no later account-level seat observation, so no licensed workflow or PR was dispatched. Keep this issue open.
The prepared settings-cache change and evidence are now in draft PR #619, source e404585a1a0d17f7dfb9afee139ff1bad27c8a51. The central lock has admitted its Unity 2021.3 job on ELI; remaining supported Unity and performance gates are still pending. Main static CI passed. A separate dependency-audit failure before formatting is tracked in #620. This issue remains open for integration/review and its retained OOM-investigation limits.
PR #619's Unity 2021.3 job 113053153882 completed with one Editor test failure: HarvesterRescansReuseTheSharedPassiveSettingsCache expected rescan counter 3 and observed 1. Retained results.xml reports 998 passes, 1 failure, and 11 skips; artifact SHA-256 f02dc77f7f04fd14638aad0c269d2b3ad186aed1cd1b8d6c5a3aeeb0abff39e6. PlayMode and standalone steps completed successfully; license return, cleanup classification, central release, and confirmed cleanup all passed. The failure is not a lock-admission problem.
The existing test calls RescanNow twice without establishing its required idle editor state. The production counter increments only after availability and compilation/update guards, so the unchanged counter indicates both calls returned before the cache path. Native flags were not included in that assertion; the exact busy flag is not claimed. Source review finds no later availability change or test mutation of availability.
Bounded candidate: run the existing warm-cache and rescan operations inside the shared editor-idle scheduler, await actual callback completion, and retain both exact +2 counter assertions and the one-load/zero-search assertions. Capture the counters within the callback so unrelated editor ticks cannot change their scope. Do not bypass the production guard, add a sleep, skip the test, or relax a threshold. Verify focused repeated native runs, affected and ordinary Editor scopes, cleanup/restoration, and the supported CI revision before integration. Raw proof lives under ignored .artifacts/perf-lab/613-settings-cache/pr619-unity2021/.
Question: can the cache integration test complete a pending script compilation through the Unity Test Framework's own reload instruction, then execute both guarded production rescans against a freshly constructed passive cache?
Baseline/RED: exact-head Unity 2021 CI records isCompiling=True throughout 64 yields. Official Unity UPM 1.4.5 source shows EditModeRunner locks reloads during a run; its RecompileScripts instruction prepares restoration, releases that lock, waits for completion, and rejects compiler failure. The uploaded job log starts a changed-Assets/csc.rsp compilation before test prebuild and reloads after the suite. Longer ordinary yielding cannot complete a framework-held reload.
Hypothesis: use yield return new RecompileScripts(false) before constructing transient settings. false permits an already idle editor; successful compilation remains required. Assert the editor is idle afterward and retain both rescan calls and all four cache/counter assertions. This uses the documented framework lifecycle, without changing production guards or adding timeouts.
GREEN checks: fresh native fixture, repeated focused execution with complete framework cleanup, affected scope, ordinary Editor scope with owned samples, then actual supported-floor XML/cleanup. Stop/reject if reload restoration, cache identity, compiler state, or cleanup fails; retain negative results. Local 6000.4.6 proof cannot establish 2021 compatibility. Evidence: ignored .artifacts/perf-lab/613-settings-cache/ and .artifacts/unity-mcp/s360-*; immutable original publication remains intact. Official API.
Native screening rejected the unconditional RecompileScripts(false) proposal before commit. Run s360-recompile-01, GUID a72a48f7-7bd7-46f7-8de6-05ae23f7810e, has 0 passes/1 failure: the instruction refreshes the entire host project even when compilation is absent, surfacing an existing invalid GUID in Assets/Plugins/Zenject/package.json.meta. The framework is now inactive with the original clean scene restored; the failed result and cleanup error are retained. No host metadata was edited and no logs/assertions were suppressed.
Revised hypothesis: invoke the framework's RecompileScripts() instruction only when EditorApplication.isCompiling is true, before constructing any transient settings. An already idle editor can execute both guarded rescans directly without a whole-project refresh. The pending path still expects compilation and requires success, rather than bypassing the busy guard or extending timeouts. Retain the idle assertion and all four original cache/counter assertions. Screen the idle path repeatedly and the affected/full scopes; the pending-reload path still requires actual supported-floor CI evidence. Stop on compiler, restoration, cache/counter, or cleanup failure.
Refine the pending-compilation hypothesis using the narrower official instruction: WaitForDomainReload releases the framework reload lock and fails on compilation failure or missing reload, without issuing AssetDatabase.Refresh. Source: official UPM Test Framework 1.4.5, TestRunner/Messages/WaitForDomainReload.cs; API.
The conditional RecompileScripts proposal has 12 actual idle-path passes with completed cleanup. The local repeat orchestration was ended deliberately after choosing this more specific lifecycle operation; its twelfth native run was observed to terminal cleanup, not canceled or restarted.
Next screen: conditionally yield WaitForDomainReload before constructing settings. To exercise the actual pending path locally, temporarily instrument this same fixture with the public CompilationPipeline.RequestScriptCompilation call and one editor update, assert genuine isCompiling=True, then let the normal conditional await and unchanged rescan/cache assertions execute. Retain the instrumentation source hash and result/cleanup identities; remove the temporary trigger before the final repeated/full-scope verification. No busy flags, production guards, or result assertions will be overridden. Stop on missing compilation, missing reload, compile failure, test restoration failure, or cleanup failure.
The completed matrix at head 84883ad69c7647ae679b4605ce43bae725c1e42c narrows the failure: Unity 2022.3 passes on DAD-MACHINE (raw XML 999 passed, 0 failed, 11 existing skips), and Unity 6000.3 job succeeds. Unity 6000.5 on ELI-MACHINE reproduces the supported-floor case exactly: 998 passed, 1 failed, 11 existing skips, 0 inconclusive; the cache test reports Compiling=True, updating=False after all 64 ordinary yields. Its artifact 11519258345 SHA-256 is baff9fd1167c919c10f67ba89979df20e8b24a4fce58575bf87235e9ef39abbe. Every cleanup/release gate passes.
The first local real-compilation probe of the WaitForDomainReload candidate passed: s360-forced-compilation-01, GUID e321f3bb-4b6c-430e-9c3d-e77e982f5553, records compilation true before the instruction and false afterward, then executes both production rescans and all four cache/counter assertions. Result and cleanup identities match and the original scene is clean. The temporary fixture source SHA-256 is 14e88b2e63c76658520260c5e225057b63c4b3960ca813cf905ed8fab6817a54; the trigger uses the public compilation API and does not spoof flags or bypass guards. Repeated pending-path checks are ongoing. This is local lifecycle evidence; supported CI still needs to pass the final source.
The final WaitForDomainReload candidate passes local native verification: 10 real pending-compilation probes, 50 separate executions of the final fixture, 117/117 affected tests, and 975/975 ordinary Editor tests, including all 13 sample-quality cases. Every accepted run has positive passes, zero failed/skipped/inconclusive cases, matching run/cleanup identities, and completed framework cleanup with the original clean scene restored.
The final fixture SHA-256 is 2e5b2ce9b4b064e3627d1e0b7a84e1ede740f762924442a1508c8996491110b5. The temporary compile trigger was removed before final-source runs; its source and ten genuine compiling=True → False observations remain separate retained evidence. Both production rescan calls and all four cache/counter assertions are unchanged. No production busy guard, compiler flag, timeout, or log assertion was overridden. The rejected unconditional-refresh result remains retained.
Full-scope result GUID: a2785bb5-d2bb-4ae3-90f5-1d47b7bfda23; result SHA-256 9197aea3b6ec1baa837087437d6ac334ba2ee36607720c35b62b6711fb4ee034; cleanup SHA-256 c683276efeb669ef3a3380053817fe5e04acbf454a255cdb49e44a211052ddcf. All 43 original host sample files and metadata, eight temporary package paths, and six original user edits are restored by exact hashes; the baseline assembly is fresh and scratch/candidate fixtures are absent.
This resolves the local lifecycle screen. Actual supported-version CI on the new source remains required before accepting compatibility. Review/integration, shipping gates, and the separate OOM root-cause investigation remain open.
At PR #619 head d4c06af, Unity 2021.3.45f1 job 113088135550 now passes HarvesterRescansReuseTheSharedPassiveSettingsCache after the real pending compilation completes. EditMode instead fails CompilerDiagnosticCapturesPairExactOutputWithTriggeringCode at CreateCompilerDiagnosticSurface:1095 (EditorStyles.textArea.font). Raw XML: 998 passed, 1 failed, 11 existing skips; PlayMode 1522/1522 and Standalone 1518/1518 pass. Return/classify/release/confirmed cleanup all pass. Retained raw ZIP digests, job and mode proof: .artifacts/perf-lab/613-settings-cache/pr619-final-unity2021/.
Question: does the documentation UI Toolkit builder depend on an IMGUI style cache that is uninitialized after domain reload? Unity's 2021.3 reference source shows textArea directly dereferences s_Current; UpdateSkinCache initializes it during the GUI skin lifecycle, and textArea is constructed from TextField. Hypothesis: the capture's font lookup is a test setup dependency on a prior GUI event, separate from the settings cache behavior.
RED: reproduce the original builder's failure with only the current EditorStyles cache unavailable, restoring the original static state in finally; preserve all exact diagnostic/source assertions. GREEN: resolve the same built-in inspector TextField font through the public skin API without requiring that cache; compare live font identities, repeat the native contract 50 times with matching cleanup, run related documentation contracts and ordinary Editor scope, then verify the supported CI matrix. Stop if the skin lookup differs materially, other state is changed, cleanup fails, or native reproduction contradicts the hypothesis. No sleeps, skipped assertions, log suppression or timeouts added. Preserve the pending-compilation handoff fix.
Primary editor/sample state is currently fully restored, clean and inactive; no local native run or candidate overlay is active.
The Unity 2021 documentation capture failure is explained by an uninitialized IMGUI EditorStyles cache after domain reload. The original helper reproduced the exact NullReferenceException at CreateCompilerDiagnosticSurface:1095 in 50/50 cold-cache probes; each probe restored the original cache in finally. The built-in inspector TextField lookup returns the same font on the live host (both fonts inherit the default), without requiring a prior IMGUI skin event. The candidate changes that lookup and adds a dated explanation, retaining all diagnostic ID and triggering-source assertions. Production cache guards and the verified compilation handoff are unchanged.
Candidate verification: 50/50 cold-cache probes, 50 separate native NUnit executions with unique GUIDs and matched cleanup, related documentation contracts 9/9, and ordinary Editor 975/975 including all 13 sample quality cases; zero failures, skips or inconclusive results in these scopes. CSharpier, spelling and diff checks pass. Evidence: .artifacts/perf-lab/613-settings-cache/native-primary-backup-s361/ (candidate SHA256 fc2b449674c825d074fd89df18b0bd08b5bd4cac163f6bfee0a40b427731afde); full result SHA256 43e5b0816813022123c9f7ec878d68b80871783e0dce4c447703a865a8fb4f84, cleanup SHA256 e3aef5771141002f11f61828dd927065743a3f40591721c470c4504b9a488046.
All temporary host work is restored: original 43 sample files/root metadata match fresh hashes, the owned 42-file fixture is archived, all nine primary overlay paths are restored, and six original user edits are byte-identical. Baseline assembly 01:06:36.542418Z is newer than restored source 01:06:31.3996605Z; candidate cache fixture/scratch sample fixture absent, editor idle and original scene clean.
At prior PR head d4c06af, raw XML confirms Unity 2022.3, 6000.3 and 6000.5 pass all modes and central license return/classify/release/confirmed cleanup. Unity 2021 passes the repaired cache test, PlayMode and Standalone, but its documentation capture remains the recorded RED. The font fix is ready for one bundled push to existing draft PR #619; new exact-head CI, shipping gates, human review and integration remain. The cause of earlier memory growth before the original OOM is still unknown.
Unity 2021.3.45f1 now passes all modes at exact PR #619 head 5c74fd4: run 37711381000, DAD job 113097939114. Raw XML confirms both repaired cases Passed (HarvesterRescansReuseTheSharedPassiveSettingsCache and CompilerDiagnosticCapturesPairExactOutputWithTriggeringCode). EditMode 999 passed, zero failed, 11 existing skips; PlayMode 1522/1522 and Standalone 1518/1518 pass with zero skips/failures. Acquisition, license return, cleanup classification, lock release and confirmed-cleanup gate all pass.
Artifact SHA256s: EditMode c068605a29fd19f12a52f914542fd987738d1142f8cdf5693ff2904e5f95ef91; PlayMode 5727ff0ad57c4e282fad967a2ab0b7c6844957647128ed5cb602b2de0f1cdd17; Standalone 2c623063646aabedde4c213f375c93756d8f6b52c073483f6a582b2b2ad82e19. Retained ZIPs, raw job and mode proof: .artifacts/perf-lab/613-settings-cache/pr619-5c74-unity2021/.
This confirms the cold-style cache defect and fix on the supported floor, alongside the existing pending-compilation handoff. New-head remaining Unity versions, shipping verification, human review and integration remain pending. The earlier OOM memory-growth cause remains unknown; this issue stays open.
Exact PR #619 head 5c74fd4 now has a successful ordinary Unity CI aggregate (run 37711381000). All four version jobs completed successfully. The 2021, 2022 and 6000.3 raw mode XML and central cleanup have been retained and checked; 6000.5 raw retention is next.
Next verification question: does this exact shipping package preserve runtime/AOT behavior across the supported endpoint editors and all declared stripping/cardinality cells? Baseline: the ordinary modes pass, but no exhaustive shipping verdict is retained for this exact head. Hypothesis: the editor cache and capture corrections preserve the shipped runtime behavior.
Use the maintained Unity Tests workflow with shipping_fidelity=true and shipping_native_payload=true, incremental and consumer-install modes false, on the existing review branch after checking its exact remote ref. This runs the existing 20 shipping cells per endpoint: Minimal/Low/Medium/High x semantic-18/cardinality-1/16/256/1000, with High semantic native payload retention. The regular mode gates and central editor validation/acquisition/return/classification/release/confirmed cleanup remain intact.
GREEN: actual per-cell semantic proof, profile/source/player manifest identity, readable matrix summaries, sealed evidence and retained payload checks, plus terminal successful cleanup on both Unity 2021.3.45f1 and 6000.5.2f1. Stop and investigate any cell, profile, artifact, license or cleanup failure; keep all failed evidence, no skipped cell, timeout increase, partial-success claim, selective rerun or runner provisioning. Dispatch once, observe the same handle; no claim that these characterization cells establish timing calibration or throughput parity. Evidence will remain under .artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/.
The exhaustive shipping request was accepted once as run 37713045950, created 2026-10-08T01:27:47Z at exact review head 5c74fd4. Inputs shipping_fidelity=true, shipping_native_payload=true, incremental=false, consumer=false. The remote-ref/request/accepted-run proof is retained in .artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/. No earlier active manual run existed on this branch; the PR matrix was terminal before dispatch. Observe this same handle through all cells, artifacts and central cleanup; do not redispatch after an observation timeout.
All 12 ordinary-mode raw XMLs now verify at the exact head, including both repaired Editor cases on all four versions. Unity 2021/2022/6000.3 have EditMode 999 passed/0 failed/11 existing skips, PlayMode 1522/1522 and Standalone 1518/1518. Unity 6000.5 has EditMode 999/0/11, PlayMode 1521/1521 and Standalone 1517/1517; its pre-existing capability-dependent counts match the preceding head. Every raw version job verifies successful acquire, return, classify, release and cleanup gate. Retained proof locations: pr619-5c74-unity2021/ and pr619-5c74-matrix/. Static CI and ordinary Unity aggregates pass; performance workflow also reports successful completion and its raw artifact retention is next. Shipping remains pending; human review and integration remain required.
The exact-head performance artifacts are retained and checked: run 37711380137, head 5c74fd4. Internal Standalone 208/208 pass with zero skips; comparisons Standalone 470 pass/zero fail/66 unsupported-library capability skips; the same comparisons artifact also contains allocation-honesty PlayMode XML with 5/5 passed and zero skips. All 66 reasons identify unavailable semantics in comparison libraries, not missing DxMessaging target coverage. Both raw jobs pass acquire/return/classify/release/confirmed-cleanup.
ZIP SHA256s: comparisons e01e55b41e8f6a4692bc8f5adab60490cd02530512b8f232bbc3f3cada95b649; internal a58c10d362a27bd7bf9dc4d4fcd4a083d0e4055fa2275515f63429440be293a6. Proof, raw jobs and ZIPs: .artifacts/perf-lab/613-settings-cache/pr619-5c74-performance/. Standalone allocation unavailability remains distinct from measured zero; these green jobs do not establish confirmatory variance, power or parity.
Exhaustive shipping run 37713045950 is actively executing Unity 2021's stripped-player cells under the central lock; observe that existing handle to artifacts and terminal cleanup. PR body now distinguishes completed ordinary/performance gates from pending exhaustive shipping, unknown prior memory-growth cause, human review and integration.
Acceptance evidence was checked against the current tested PR source 5c74fd4cef7956d027f5a061caf96dffde026343.
All five cache production files still match the original native evidence SHA-256 exactly. The later lookup-test change handles pending compilation through the Unity test framework; its current raw four-version Editor results passed. The original native evidence was rechecked on disk: 20 raw result/ownership/cleanup files and 32 supporting files, plus the immutable archive and manifest, retain their recorded bytes.
The bounded raw observations contain 16 paired phases, 64 calls per arm, 64 legacy searches versus zero cached searches, and 31,324 asset paths on Unity 6000.4.6f1. All four real AssetDatabase import/delete/asset-move/folder-move tests passed. Removing notification forwarding retains three expected failures, including the absent-to-present transition without domain reload.
The five acceptance criteria are mapped in ignored 613-settings-cache/acceptance-audit-s367.json. Passive callback checks include unchanged production guards, native notification tests, and source-linked boundary tests; the latter use Unity doubles and remain a distinct scope. The sanitized original crash facts stay in this issue; the license-bearing raw crash log is not in the public archive.
The original immutable publication is unchanged. These observations support removal of repeated settings searches. They do not establish a throughput ratio, leak/retention result, or explanation of the earlier native memory growth. The issue's explicit remaining-unknown option is the supported outcome for that first criterion; no exhaustion was attempted in the shared editor.
Keep this issue open for human review and integration. Shipping validation 37713045950 is still running, and its exhaustive player verdict remains pending.
The oldest supported endpoint in shipping run 37713045950 now has a verified retained verdict at exact PR source 5c74fd4cef7956d027f5a061caf96dffde026343.
Unity 2021.3.45f1 job 113103173345 passed all 20 cells: Minimal/Low/Medium/High stripping × semantic-18/cardinality-1/16/256/1000. Raw build reports, profile bindings, positive/missing-root-mutant contracts, two consumer assembly inventory, unchanged before/after player manifests, and twenty distinct build start times were inspected. No failed or unreadable cells. Clean build-cache mode passed; the recorded project Library state was warm, not cold.
The maintained production bundle verifier and replay both returned zero over 541 retained files, bundle digest 110be11ab40b41f0cb9e5ec58494122ee00f580b4c7fe4ea691290e6f9295011. Shipping artifact SHA-256 aadf730de34a593f77f381426ea4bf9a62d38f4bc3da78c80ae44cee164e6066; native-payload artifact SHA-256 77a5ee2d5e466fa3031afd5e5bf3fe7d5651b551022291ba2c5cb67aaca93fe8.
The High semantic retained executable, GameAssembly.dll and global-metadata.dat each match the exact source player-manifest bytes and length. The same job's raw ordinary results pass: Editor 999 passed / 0 failed / 11 existing capability skips, PlayMode 1522 / 0 / 0, Standalone 1518 / 0 / 0. Acquired lock, license return, cleanup classification, release and final cleanup gate all passed.
Retained proof: 613-settings-cache/pr619-shipping-s362/unity2021/endpoint-proof.json, raw job, five ZIPs and the extracted sealed shipping bundle. These are shipping correctness and characterization observations; no calibrated timing/parity claim. The full workflow remains active, with Unity 6000.5's 20-cell endpoint and remaining ordinary jobs still pending. Human review/integration remain required; no issue closed.
The same shipping workflow's Unity 2022.3.45f1 and 6000.3.16f1 ordinary results are now verified from all six retained ZIPs and raw jobs at exact source 5c74fd4cef7956d027f5a061caf96dffde026343.
Each version passed Editor 999 / 0 failures / 11 existing skips, PlayMode 1522 / 0 / 0, and Standalone 1518 / 0 / 0. HarvesterRescansReuseTheSharedPassiveSettingsCache and CompilerDiagnosticCapturesPairExactOutputWithTriggeringCode both passed in each Editor XML. Acquire, licensed work, return, cleanup classification, release and final cleanup gate succeeded in both jobs, 113103173247 and 113103173268.
Evidence: 613-settings-cache/pr619-shipping-s362/ordinary-2022-6000.3/mode-proof.json, artifact metadata, all six ZIPs and raw job snapshots. An initial one-off inspector looked for the helper method BuildCompileCaptureCases as a test name; source and XML inspection identified its actual NUnit caller, and that caller's result was verified. This was an inspector assumption, not a CI test failure or rerun.
Nine ordinary mode XMLs across the first three versions now validate in this manual workflow, alongside Unity 2021's 20-cell endpoint/native payload proof. Unity 6000.5's job 113103173264 and its exhaustive shipping endpoint remain live/pending in run 37713045950. Keep the full verdict pending; human review/integration remain required.
Complete shipping evidence verified at PR #619 head
Shipping run 37713045950 is terminal success at 5c74fd4cef7956d027f5a061caf96dffde026343. The preflight, all four Unity jobs and aggregate job 113130893537 succeeded. Each licensed job successfully acquired the central lock, returned its license, classified cleanup, released and passed the confirmed-cleanup gate.
Both endpoints contain all 20 / 20 stripped IL2CPP cells: four stripping levels × semantic-18 and cardinalities 1/16/256/1000. Total 40 cells, no failed or unreadable entries. The maintained bundle verifier and replay both exit 0. Bundle digests:
For every new-endpoint raw cell, exact canonical profile bytes/hash, Unity/topology, successful distinct build times, CleanBuildCache, Release IL2CPP/C++, empty player-output provenance, positive player, missing-root mutant, exact shape/count inventories and pre/post player manifests pass. Runtime UNITY_INCLUDE_TESTS is false; the consumer assembly inventory is exactly Assembly-CSharp and WallstopStudios.DxMessaging. Library state is warm, so this is not a cold-project claim.
Latest ZIP commitments: shipping artifact 11525777275 SHA-256 708cf78c91edd29f28a48bd5cb01a9146d0b2e25d94177878b4ad9544d016582; native payload 11525932000 SHA-256 3d7338d51baf3612763a74ba2860c617543230f1dd09f4f56c939ae81c47a4cb. Its source-player manifest is byte-identical to the High semantic cell. All three retained role lengths/hashes match:
Current6000.5 ordinary XML reports Editor 999 passed / 0 failed / 11 documented skips; PlayMode 1,521 / 0 / 0; Standalone 1,517 / 0 / 0. Every exact test-case outcome and skip reason matches the prior same-source 6000.5 run. The aggregate Editor root label is Skipped:Ignored due to the existing graphics/manual capture skips; all 999 executed cases pass. Both repaired native cases pass. The other three versions' raw ordinary proofs were already retained and their ZIP commitments remain verified.
Retained complete workflow/raw-job/native proofs: .artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/complete-shipping-proof-s372.json and unity6000/endpoint-proof.json. This matrix is characterization; it establishes neither timing uncertainty nor formal parity/power. Memory growth before the original crash remains unproven. Human review and integration are still required; PR #619 remains draft and #613 stays open. No selective rerun, new source push, issue closure or original-publication byte change.
Activity
wallstop commentedon Oct 7, 2026
Bounded settings-search investigation preregistration
Current default branch
916f0d7db71532168a27d09d579bfe9a6c8f3897performs a project-wideFindAssets(t:DxMessagingSettings)on every harvester rescan. Its shared passive loader also repeats fallback searches when the canonical asset is absent. This is the reproducible search-amplification defect; the retained crash does not prove that this query caused the preceding ~5.51 GB native memory growth.Hypothesis: sharing a passive lookup cache, including cached absence, removes repeated searches between relevant asset changes while preserving settings discovery and application. RED: repeated unchanged lookups issue repeated queries; a stale miss ignores a later settings asset if cache invalidation is omitted. GREEN: one fallback query per stable revision, zero AssetDatabase mutation from passive lookup, live settings edits, destroyed-object recovery, create/move/delete/import invalidation, and deferred idle rescans independent of LogEntries availability.
Implementation will retain domain-local lookup/search/rescan counters. Import callbacks will invalidate and request deferred work without querying/loading/creating assets inside the callback. Settings OnValidate will signal invalidation without adding asset operations. Use Unity's four-argument OnPostprocessAllAssets callback for the supported 2021.3 floor; projectChanged alone misses hidden assets.
Bounded editor measurement plan: record Unity version, project asset count, active workloads, memory and query/rescan counters; run four counterbalanced blocks of 64 uncached legacy lookup calls and 64 cached passive calls (ABBA/BAAB), separately for available hit/miss environments. Retain every observation; report elapsed time and memory trend descriptively, without claiming OOM causation or independent performance inference. Stop immediately for non-idle editor state, unexpected asset mutation, memory growth >128 MiB within one block, or lookup block >2 seconds; do not induce exhaustion. Do not remove existing user settings to manufacture a missing-asset environment.
Evidence: ignored
.artifacts/perf-lab/613-settings-cache/, production-linked deterministic tests, eventual Unity EditMode integration results and bounded paired records. The configured host bridge and documented fallback ports currently have no TCP listener; native/editor measurements will remain pending until a live safe host is available. Work proceeds oncodex/613-cache-settings.wallstop commentedon Oct 7, 2026
Source inspection also found a related rescan-amplification path:
Tickreads LogEntries count whenever reflection is available, even withUseConsoleBridge=false. The bridge-disabled scan leaves_lastSeenCountunchanged, so a nonzero count differs on every 250-ms poll and repeatedly runs the IL scanner/settings search. The fix will gate console-count polling on enabled base-call checks plus the console bridge, while keeping settings-revision observation active and routing explicit requests through the existing coalesced idle callback. RED will use the production harvester linked against controlled Unity boundary doubles; this is a managed control-flow proof, with native editor/memory measurements still pending.wallstop commentedon Oct 7, 2026
Native verification update and bounded follow-up protocol (#613)
The restored MCP bridge reached the real macOS host editor, Unity 6000.4.6f1. Fresh passive preflight proved an inactive framework, idle editor, main stage, and one saved clean scene. Loading the candidate exposed CS0246 for NUnit NonParallelizable, which Unity's NUnit assembly does not provide. That attribute was removed locally; the fixture is run in an isolated maintained-runner scope. Fresh-symbol and DLL/source timestamps then proved the new fixture was loaded.
Native focused settings lookup + settings provider: 22 passed, zero failed/skipped/inconclusive, matching run GUID c8f36793-74db-485a-bc10-a89ba3bf0c5a and terminal raw/cleanup records. Original scene remained clean.
The frozen 64-call measurement stopped on its first legacy A phase: 64/64 settings hits, 64 project-wide searches, 3931.2884 ms. This exceeds the preregistered two-second lookup limit. Working-set growth was 3,817,472 bytes; Unity allocated-memory growth was 22,033,768 bytes. This is an unfavorable, unpaired observation, not an OOM reproduction or causal explanation. All observations are retained. Environment: 31,324 AssetDatabase paths, canonical settings present, absent native environment unavailable without altering existing user settings.
Before another native measurement, change the bounded workload to 8 calls per phase, four blocks ABBA/BAAB/ABBA/BAAB. Preserve both arms, all rows, elapsed and memory observations, and query counts; stop if any phase OR complete counterbalanced block exceeds two seconds, memory grows >128 MiB within a block, or editor/scene state becomes unsafe. This smaller workload was selected after observing the stop; results are descriptive and cannot support an independent confirmatory timing claim. Warm each arm once outside measurement. Do not remove existing settings to manufacture absence.
The next native regression scope will use an owned unique temporary asset folder and the production passive loader with real AssetDatabase delegates restricted to that folder. Cover import after cached absence, deletion to cached absence, individual asset move, and parent-folder move through the actual installed AssetPostprocessor. Keep all existing settings untouched, delete only the owned folder, and verify passive cleanup. These checks supplement the existing controlled callback tests.
Local retained evidence: .artifacts/perf-lab/613-settings-cache/ and .artifacts/unity-mcp/613-native-focused-01.json with GUID/path companions. Static CI already passed all 17 jobs at c0b5890 in run 37578142506. Native compatibility correction is still local and will be included in the review branch after verification. Issue remains open.
wallstop commentedon Oct 7, 2026
Native import regression: all four owned real-AssetDatabase cases passed (import after cached absence, deletion, asset move, parent-folder move). Raw and passive cleanup are terminal with matching GUID affcb8d3-4bb4-488a-bf57-c7462017dd8a; original scene is clean. The smaller preregistered 8-call experiment completed all 16 phases without stopping: A made 64 searches; B made 64 passive calls with zero searches. Native allocated-memory deltas summed to +22,033,000 bytes in A and zero in B; this short sequence does not establish retained-memory causality or explain the historical OOM.
Before accepting callback attribution, run a native negative control: temporarily suppress only the AssetPostprocessor's forwarding call in the embedded package, retain the diff, recompile with fresh-assembly proof, and run the same four native cases. Deletion/move revision assertions must detect missing notification independently of OnValidate. Restore the exact production postprocessor, compile fresh again, then run the affected ordinary Editor scope with the normal category exclusions and the explicit documentation writer excluded. Preserve all control failures; no production threshold or assertion changes. The scratch folder and captured sidecar work are owned by each test and cleaned without altering existing settings.
Verify settings invalidation through native asset imports (#613)
wallstop commentedon Oct 7, 2026
Native #613 result at ae79805
The review branch is now pushed and its exact remote head verified. Native host Unity 6000.4.6f1 compiled the changed production/test files. The Unity-incompatible NUnit attribute was removed. Real AssetDatabase regressions cover import after cached absence, deletion, asset move, and parent-folder move. Suppressing only the installed production postprocessor forwarding produced three expected native failures (absence, deletion, parent-folder move); restoring it cleared those failures. The affected Editor scope passed 117/117, with zero skips or inconclusive cases and matching terminal raw/passive cleanup records. Focused prior scopes passed 22/22 and 4/4.
The original 64-call experiment stopped at 3931.2884 ms on its first legacy phase. The preregistered eight-call follow-up completed four counterbalanced blocks. A is the original harvester's project-wide FindAssets plus first-GUID load; B is the candidate shared passive lookup. There were 64 project-wide A queries and zero B queries across 64 calls. All paired rows follow; negative memory changes are retained.
Elapsed times are descriptive; cached durations are near timer resolution. The eight-call workload was selected after the original stop, and no ratio or independent confidence claim is made. Unity allocated-memory deltas are snapshots, not proof of retained-memory growth. The historical OOM's preceding memory growth remains unknown. No exhaustion was attempted. This macOS project had 31,324 asset paths and existing canonical settings; absence measurements were unavailable without changing existing settings. Idle editor/framework flags were verified, but unrelated background processes remain unmeasured.
Native verification used an owned overlay of exact changed files on the host's older package checkout. Full latest-master shipping-tree, supported Unity floor/matrix and IL2CPP verification remain pending. Broad local sample verification could not install an owned fixture because older existing sample assemblies and GUIDs conflict; those files were preserved. Native cleanup restored the original saved scene. Original embedded files were restored by hash and freshly compiled; the new fixture is absent, no temporary asset folders remain, and console ground truth reports compilationFailed=false and zero errors.
Local manifest SHA-256: fba49822b30203ac492822027abb21e54e1258c3f2015bc43a3f1f1c3946de01. Retained raw result, run identity and cleanup companions are under .artifacts/unity-mcp/613-native-*; controls, raw measurements, requests, source hashes and restoration records are under .artifacts/perf-lab/613-settings-cache/. The eight-call response SHA-256 is 45282c1f696a2a45aec4d47e38da58385a497481984f423e37eb16dbcea729f6. This is retained local evidence and published observation data, not an immutable archive/independent-restore claim. Static CI at the preceding c0b5890 commit passed all 17 jobs; a new static workflow for ae79805 has been dispatched. No licensed Unity CI or #510 calibration was dispatched. Review, durable evidence publication and remaining shipping gates are still required; issue remains open.
wallstop commentedon Oct 7, 2026
Final static gate: CI run 37655961777 completed success at exact pushed head ae79805. All 17 jobs, including CI Success, passed. Raw terminal run/jobs metadata and source identity are retained. No licensed Unity job ran.
The final local evidence manifest SHA-256 is 78f2023c0ce99c52c4c8b01bba62f8b690049d1fb156840bc2fc4117c0d534a2. The earlier fba49822b30203ac492822027abb21e54e1258c3f2015bc43a3f1f1c3946de01 manifest cited above is retained byte-for-byte as evidence-manifest-native-r1.json; subsequent metadata snapshots are additive. These remain local archives, not immutable publication claims. Review title/body are prepared locally. Opening the PR would trigger licensed workflows, so it remains gated by the existing #510 account-level seat reconciliation condition. Supported shipping verification, safe sample fixture preparation, durable evidence publication and maintainer review remain pending.
wallstop commentedon Oct 7, 2026
Full native Editor verification protocol before fixture work
Question: does the exact candidate Unity asset tree at ae79805 pass the ordinary Editor suite, including the shipping sample contracts? Previous native verification passed 117 affected cases; the full suite is unmeasured because existing older Assets/DxMessagingSamples imports conflict with the shipping sample GUIDs/assemblies.
Use the current host Unity 6000.4.6f1 with passive inactive/idle/main-stage/all-scenes-clean preflight. Record every existing sample file and metadata hash outside Assets, then preserve the complete existing sample folder and its root metadata in an owned backup outside Unity import roots. Temporarily unimport that preserved folder, refresh safely, and verify its GUIDs/assemblies are absent before installing a new owned Assets/DxmCiSamples fixture. Copy only shipping C#, asmdef and scene files with their exact original metadata, from the candidate Samples~ tree. Refuse existing fixture paths or duplicate GUIDs/assembly names; no user sample bytes will be overwritten.
Overlay all twelve differing Unity source/meta paths from the candidate onto the embedded package, with original backups/hash checks. The remaining Runtime/Editor/Tests/Samples~ tracked assets are identical to the candidate; preserve unrelated MCP setup edits. Prove fresh fixture and sample assemblies before launching the maintained runner.
Run the complete WallstopStudios.DxMessaging.Tests.Editor assembly with the normal EditMode category exclusions and the explicit documentation PNG writer excluded. Retain every outcome, accept zero failures/inconclusives only after matching GUID/path raw and passive cleanup records. Stop for unsafe editor/scene state, conflicting GUIDs/assemblies, unexpected file changes or compilation errors; observation timeout alone does not authorize a new test launch. Fix an observed failure at its cause rather than changing assertions or accepting fixture skips.
After cleanup, remove only unchanged owned fixture files, restore every original imported sample file/root metadata and embedded source by hash, refresh and verify fresh original assemblies plus clean scenes. Keep unexpected changes for review. Retain inventory, ownership, compiler/source identity, result and restoration artifacts under ignored .artifacts/perf-lab/613-full-editor/. This is local Mono/editor coverage, not supported-version matrix or IL2CPP performance proof.
wallstop commentedon Oct 7, 2026
Fixture admission correction before copying any samples: the preserved folder's three sample assemblies unload, but GUIDToAssetPath retains deleted path entries. Native inspection across all 19 shipping compile/scene assets found no file on disk, no OnlyExistingAssets GUID, and no loaded main asset at any retained path. This is a retired entry rather than a live duplicate.
Unity documents that removed GUIDs remain until editor closure and provides AssetPathToGUID(..., OnlyExistingAssets) to distinguish current assets: https://docs.unity3d.com/ja/current/ScriptReference/AssetDatabase.AssetPathToGUID.html . Refine the owned fixture's duplicate check to accept a retained path only when it belongs to the exact inventoried/preserved original folder and all three native/disk existence checks are negative. Continue refusing any existing imported asset, loaded assembly, destination, or unexpected original hash. Retain the initial refused installation and the classification evidence. No test assertions or pass thresholds change.
wallstop commentedon Oct 7, 2026
Correction to the preceding admission note: the initial inspection snippet tried to compare missing original file bytes before checking existence, so it failed without emitting its 19-row result. The absence/OnlyExistingAssets/loaded-object classification is not yet proven. I am adding the missing existence guard and rerunning inspection before accepting any fixture installation. The installer remains stopped; no shipping sample has been copied.
wallstop commentedon Oct 7, 2026
Full native Editor result and durable replay preparation
At exact candidate Unity assets ae79805, the complete ordinary Editor assembly passed 975/975 on Unity 6000.4.6f1: zero failed, skipped or inconclusive cases, duration 53.0997109 seconds. The usual category exclusions and explicit documentation PNG-writer exclusion remain in place. All 13 SampleQualityContractTests cases passed, including imported scene execution and ownership/diagnostics cleanup. Run GUID cd2b4d92-972e-4bb8-a2a8-395f6a951f91 has terminal raw/passive cleanup, matching identity/path, inactive framework and the original clean saved scene.
The guarded GUID inspection now completed all 19 rows and confirmed no current disk asset/OnlyExistingAssets GUID/loaded main object at the retired paths. The fixture copied 38 exact shipping files; metadata and GUID resolution matched, all four sample assemblies compiled fresh. After testing, the unchanged owned fixture was archived outside import roots. All 43 original user sample files and their root metadata were restored and matched their pre-work hashes. All twelve differing package paths were restored; the original assembly compiled fresh, the new fixture disappeared, and console ground truth has no compilation failure or errors. Unrelated existing MCP setup edits remain untouched.
Next question, before implementing a publication adapter: can the existing immutable evidence-bundle tool reproduce this editor-only lookup characterization from sanitized raw measurements and native result/cleanup records? Its current four reducers do not accept this domain. Add a native editor settings replay within the existing tool, with no new CLI, rather than relabeling these observations as Standalone throughput or a lifecycle trace. Keep the fixed JS budget; move the existing fixed matrix/allocation test data into JSON fixtures, retaining byte-identical generated inputs and all assertions.
RED: the existing tool rejects the editor-settings characterization reducer; new rejection cases must detect changed source identity, inconsistent native leaf counts, active/dirty cleanup, missing artifacts, altered control failures, missing stopped baseline, counterbalance/call-count/search-count errors and malformed measurements. GREEN: replay the retained 64-call stopped observation, all sixteen 8-call phases, positive native runs and the three intentional notification-control failures; derive counts and descriptive memory deltas from raw data. Retain negative deltas and near-resolution timings. Add no ratio, interval, OOM causality or supported-matrix claim. Verify prior reducers unchanged, scanner admission, archive integrity and independent immutable retrieval before marking publication durable. Stop for schema ambiguity, privacy findings, byte/replay mismatch or budget growth. Evidence remains in ignored .artifacts/perf-lab/613-full-editor/ and 613-settings-cache/. Supported Unity matrix/IL2CPP and human review still remain.
wallstop commentedon Oct 7, 2026
Native Editor verification and durable evidence
The full ordinary
WallstopStudios.DxMessaging.Tests.Editorsuite passed 975/975 leaves in Unity 6000.4.6f1 on macOS 27.0.1, with zero failed/skipped/inconclusive cases, including all 13 importedSampleQualityContractTests. Run GUIDcd2b4d92-972e-4bb8-a2a8-395f6a951f91; duration 53.0997109 seconds. This followed the preregistration in comment 6042881597 and result/replay protocol in comment 6043352926.The final run imported the exact candidate tracked Unity tree at
ae79805245bc2fbcbf3479354260bb1908b08899and an owned shipping sample fixture. The original 43 sample files plus root metadata, all 12 overlaid package paths, and the clean saved original scene were restored. Fresh original assembly, new fixture absent, no scratch folders, and no console compilation failures/errors were verified. A fresh passive MCP check at 18:38 UTC still reports ready, stopped, not compiling/reloading, and the clean original scene. The six pre-existing unrelated MCP setup edits remain untouched.Immutable evidence revision 1 retains 70 declared files: all five native result/run/status/cleanup sets, the three expected negative-control failures, the stopped 64-call A phase, all 16 separately preregistered 8-call followup phases, requests, source/freshness/sample/scene/restoration observations, and earlier import refusals. The stopped baseline remains unpaired. Followup counters reproduce 64 legacy searches and zero searches from 64 cached calls. Signed live-memory changes remain descriptive; no speedup ratio, interval, allocation-recorder, leak, OOM-cause or player claim.
Manifest SHA-256:
ab70b72136a2d26845b19dfd6a260087b05ca4e3780a7e1545b9df9ba58c3c88.Archive SHA-256:
9ceee5073dc0b093f3ebf793b58b1a1df32e8bceb91b62f73b6d7bd9a2c919d9.Bundle digest:
cf39d348d6b4be154fbf4ad8d55877b77d479490c251f7f417589d405b45db1f.Release
406044866, asset619463560, 110,982 bytes. Measured source remainsae798052; verifier/tag commit isf90dca2f2e1b388ce2946a92248f6643433a9955.The authenticated repository setting read
enabled: true. Complete draft inventory and remote download were verified before publication. The published response reportsdraft: false,prerelease: true,immutable: true; its tag resolves to the exact verifier commit. A fresh SSH verifier clone withnpm ci --ignore-scriptsdownloaded the published asset into a new directory, checked full archive/manifest hashes and safe complete inventory, and ran productionverifyandreplay, both exit 0 with identical normalized output and clean checkout. All 12 original source hashes matched a separate measured-source checkout, including the one privacy-scrubbed excerpt. Isolated invalid authentication against this actual required asset returned HTTP 401 and retrieval exit 1; no fallback, and that context remained incomplete. No license-bearing historical crash log was published.The existing framework now has
editor-settings-cache-v1; structure uses the existing JSON Schema dependency and semantic checks retain source identity, chronology, native leaf/count agreement, exact control failure set, cleanup ownership/state, stopping rules and counters. Missing/malformed/altered inputs fail. Fixed data moved to JSON while preserving all existing assertions and byte-identical matrix inputs. Local 1,368 Node tests plus both archive tests, repository validation, spelling/format/Markdown and hooks pass. Static CI 37666819976 passed all 17 jobs at exact verifierf90dca2f, including Linux/macOS/Windows script tests. The JavaScript ceiling is unchanged.Supported shipping Unity/player gates, integration and maintainer review remain pending. Earlier focused runs used selected overlays; only the full run used the complete candidate Unity tree. The prior memory-growth cause remains unknown. #510 still has no later account-level seat observation, so no licensed workflow or PR was dispatched. Keep this issue open.
wallstop commentedon Oct 7, 2026
The prepared settings-cache change and evidence are now in draft PR #619, source
e404585a1a0d17f7dfb9afee139ff1bad27c8a51. The central lock has admitted its Unity 2021.3 job on ELI; remaining supported Unity and performance gates are still pending. Main static CI passed. A separate dependency-audit failure before formatting is tracked in #620. This issue remains open for integration/review and its retained OOM-investigation limits.wallstop commentedon Oct 7, 2026
PR #619's Unity 2021.3 job
113053153882completed with one Editor test failure:HarvesterRescansReuseTheSharedPassiveSettingsCacheexpected rescan counter 3 and observed 1. Retainedresults.xmlreports 998 passes, 1 failure, and 11 skips; artifact SHA-256f02dc77f7f04fd14638aad0c269d2b3ad186aed1cd1b8d6c5a3aeeb0abff39e6. PlayMode and standalone steps completed successfully; license return, cleanup classification, central release, and confirmed cleanup all passed. The failure is not a lock-admission problem.The existing test calls
RescanNowtwice without establishing its required idle editor state. The production counter increments only after availability and compilation/update guards, so the unchanged counter indicates both calls returned before the cache path. Native flags were not included in that assertion; the exact busy flag is not claimed. Source review finds no later availability change or test mutation of availability.Bounded candidate: run the existing warm-cache and rescan operations inside the shared editor-idle scheduler, await actual callback completion, and retain both exact +2 counter assertions and the one-load/zero-search assertions. Capture the counters within the callback so unrelated editor ticks cannot change their scope. Do not bypass the production guard, add a sleep, skip the test, or relax a threshold. Verify focused repeated native runs, affected and ordinary Editor scopes, cleanup/restoration, and the supported CI revision before integration. Raw proof lives under ignored
.artifacts/perf-lab/613-settings-cache/pr619-unity2021/.3 remaining items
wallstop commentedon Oct 7, 2026
Question: can the cache integration test complete a pending script compilation through the Unity Test Framework's own reload instruction, then execute both guarded production rescans against a freshly constructed passive cache?
Baseline/RED: exact-head Unity 2021 CI records
isCompiling=Truethroughout 64 yields. Official Unity UPM 1.4.5 source shows EditModeRunner locks reloads during a run; its RecompileScripts instruction prepares restoration, releases that lock, waits for completion, and rejects compiler failure. The uploaded job log starts a changed-Assets/csc.rspcompilation before test prebuild and reloads after the suite. Longer ordinary yielding cannot complete a framework-held reload.Hypothesis: use
yield return new RecompileScripts(false)before constructing transient settings.falsepermits an already idle editor; successful compilation remains required. Assert the editor is idle afterward and retain both rescan calls and all four cache/counter assertions. This uses the documented framework lifecycle, without changing production guards or adding timeouts.GREEN checks: fresh native fixture, repeated focused execution with complete framework cleanup, affected scope, ordinary Editor scope with owned samples, then actual supported-floor XML/cleanup. Stop/reject if reload restoration, cache identity, compiler state, or cleanup fails; retain negative results. Local 6000.4.6 proof cannot establish 2021 compatibility. Evidence: ignored
.artifacts/perf-lab/613-settings-cache/and.artifacts/unity-mcp/s360-*; immutable original publication remains intact. Official API.wallstop commentedon Oct 8, 2026
Native screening rejected the unconditional
RecompileScripts(false)proposal before commit. Runs360-recompile-01, GUIDa72a48f7-7bd7-46f7-8de6-05ae23f7810e, has 0 passes/1 failure: the instruction refreshes the entire host project even when compilation is absent, surfacing an existing invalid GUID inAssets/Plugins/Zenject/package.json.meta. The framework is now inactive with the original clean scene restored; the failed result and cleanup error are retained. No host metadata was edited and no logs/assertions were suppressed.Revised hypothesis: invoke the framework's
RecompileScripts()instruction only whenEditorApplication.isCompilingis true, before constructing any transient settings. An already idle editor can execute both guarded rescans directly without a whole-project refresh. The pending path still expects compilation and requires success, rather than bypassing the busy guard or extending timeouts. Retain the idle assertion and all four original cache/counter assertions. Screen the idle path repeatedly and the affected/full scopes; the pending-reload path still requires actual supported-floor CI evidence. Stop on compiler, restoration, cache/counter, or cleanup failure.wallstop commentedon Oct 8, 2026
Refine the pending-compilation hypothesis using the narrower official instruction:
WaitForDomainReloadreleases the framework reload lock and fails on compilation failure or missing reload, without issuingAssetDatabase.Refresh. Source: official UPM Test Framework 1.4.5,TestRunner/Messages/WaitForDomainReload.cs; API.The conditional RecompileScripts proposal has 12 actual idle-path passes with completed cleanup. The local repeat orchestration was ended deliberately after choosing this more specific lifecycle operation; its twelfth native run was observed to terminal cleanup, not canceled or restarted.
Next screen: conditionally yield WaitForDomainReload before constructing settings. To exercise the actual pending path locally, temporarily instrument this same fixture with the public CompilationPipeline.RequestScriptCompilation call and one editor update, assert genuine
isCompiling=True, then let the normal conditional await and unchanged rescan/cache assertions execute. Retain the instrumentation source hash and result/cleanup identities; remove the temporary trigger before the final repeated/full-scope verification. No busy flags, production guards, or result assertions will be overridden. Stop on missing compilation, missing reload, compile failure, test restoration failure, or cleanup failure.wallstop commentedon Oct 8, 2026
The completed matrix at head
84883ad69c7647ae679b4605ce43bae725c1e42cnarrows the failure: Unity 2022.3 passes on DAD-MACHINE (raw XML 999 passed, 0 failed, 11 existing skips), and Unity 6000.3 job succeeds. Unity 6000.5 on ELI-MACHINE reproduces the supported-floor case exactly: 998 passed, 1 failed, 11 existing skips, 0 inconclusive; the cache test reportsCompiling=True, updating=Falseafter all 64 ordinary yields. Its artifact11519258345SHA-256 isbaff9fd1167c919c10f67ba89979df20e8b24a4fce58575bf87235e9ef39abbe. Every cleanup/release gate passes.The first local real-compilation probe of the WaitForDomainReload candidate passed:
s360-forced-compilation-01, GUIDe321f3bb-4b6c-430e-9c3d-e77e982f5553, records compilation true before the instruction and false afterward, then executes both production rescans and all four cache/counter assertions. Result and cleanup identities match and the original scene is clean. The temporary fixture source SHA-256 is14e88b2e63c76658520260c5e225057b63c4b3960ca813cf905ed8fab6817a54; the trigger uses the public compilation API and does not spoof flags or bypass guards. Repeated pending-path checks are ongoing. This is local lifecycle evidence; supported CI still needs to pass the final source.wallstop commentedon Oct 8, 2026
The final WaitForDomainReload candidate passes local native verification: 10 real pending-compilation probes, 50 separate executions of the final fixture, 117/117 affected tests, and 975/975 ordinary Editor tests, including all 13 sample-quality cases. Every accepted run has positive passes, zero failed/skipped/inconclusive cases, matching run/cleanup identities, and completed framework cleanup with the original clean scene restored.
The final fixture SHA-256 is
2e5b2ce9b4b064e3627d1e0b7a84e1ede740f762924442a1508c8996491110b5. The temporary compile trigger was removed before final-source runs; its source and ten genuinecompiling=True→Falseobservations remain separate retained evidence. Both production rescan calls and all four cache/counter assertions are unchanged. No production busy guard, compiler flag, timeout, or log assertion was overridden. The rejected unconditional-refresh result remains retained.Full-scope result GUID:
a2785bb5-d2bb-4ae3-90f5-1d47b7bfda23; result SHA-2569197aea3b6ec1baa837087437d6ac334ba2ee36607720c35b62b6711fb4ee034; cleanup SHA-256c683276efeb669ef3a3380053817fe5e04acbf454a255cdb49e44a211052ddcf. All 43 original host sample files and metadata, eight temporary package paths, and six original user edits are restored by exact hashes; the baseline assembly is fresh and scratch/candidate fixtures are absent.This resolves the local lifecycle screen. Actual supported-version CI on the new source remains required before accepting compatibility. Review/integration, shipping gates, and the separate OOM root-cause investigation remain open.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
At PR #619 head d4c06af, Unity 2021.3.45f1 job 113088135550 now passes HarvesterRescansReuseTheSharedPassiveSettingsCache after the real pending compilation completes. EditMode instead fails CompilerDiagnosticCapturesPairExactOutputWithTriggeringCode at CreateCompilerDiagnosticSurface:1095 (EditorStyles.textArea.font). Raw XML: 998 passed, 1 failed, 11 existing skips; PlayMode 1522/1522 and Standalone 1518/1518 pass. Return/classify/release/confirmed cleanup all pass. Retained raw ZIP digests, job and mode proof: .artifacts/perf-lab/613-settings-cache/pr619-final-unity2021/.
Question: does the documentation UI Toolkit builder depend on an IMGUI style cache that is uninitialized after domain reload? Unity's 2021.3 reference source shows textArea directly dereferences s_Current; UpdateSkinCache initializes it during the GUI skin lifecycle, and textArea is constructed from TextField. Hypothesis: the capture's font lookup is a test setup dependency on a prior GUI event, separate from the settings cache behavior.
RED: reproduce the original builder's failure with only the current EditorStyles cache unavailable, restoring the original static state in finally; preserve all exact diagnostic/source assertions. GREEN: resolve the same built-in inspector TextField font through the public skin API without requiring that cache; compare live font identities, repeat the native contract 50 times with matching cleanup, run related documentation contracts and ordinary Editor scope, then verify the supported CI matrix. Stop if the skin lookup differs materially, other state is changed, cleanup fails, or native reproduction contradicts the hypothesis. No sleeps, skipped assertions, log suppression or timeouts added. Preserve the pending-compilation handoff fix.
Primary editor/sample state is currently fully restored, clean and inactive; no local native run or candidate overlay is active.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
The Unity 2021 documentation capture failure is explained by an uninitialized IMGUI EditorStyles cache after domain reload. The original helper reproduced the exact NullReferenceException at CreateCompilerDiagnosticSurface:1095 in 50/50 cold-cache probes; each probe restored the original cache in finally. The built-in inspector TextField lookup returns the same font on the live host (both fonts inherit the default), without requiring a prior IMGUI skin event. The candidate changes that lookup and adds a dated explanation, retaining all diagnostic ID and triggering-source assertions. Production cache guards and the verified compilation handoff are unchanged.
Candidate verification: 50/50 cold-cache probes, 50 separate native NUnit executions with unique GUIDs and matched cleanup, related documentation contracts 9/9, and ordinary Editor 975/975 including all 13 sample quality cases; zero failures, skips or inconclusive results in these scopes. CSharpier, spelling and diff checks pass. Evidence: .artifacts/perf-lab/613-settings-cache/native-primary-backup-s361/ (candidate SHA256 fc2b449674c825d074fd89df18b0bd08b5bd4cac163f6bfee0a40b427731afde); full result SHA256 43e5b0816813022123c9f7ec878d68b80871783e0dce4c447703a865a8fb4f84, cleanup SHA256 e3aef5771141002f11f61828dd927065743a3f40591721c470c4504b9a488046.
All temporary host work is restored: original 43 sample files/root metadata match fresh hashes, the owned 42-file fixture is archived, all nine primary overlay paths are restored, and six original user edits are byte-identical. Baseline assembly 01:06:36.542418Z is newer than restored source 01:06:31.3996605Z; candidate cache fixture/scratch sample fixture absent, editor idle and original scene clean.
At prior PR head d4c06af, raw XML confirms Unity 2022.3, 6000.3 and 6000.5 pass all modes and central license return/classify/release/confirmed cleanup. Unity 2021 passes the repaired cache test, PlayMode and Standalone, but its documentation capture remains the recorded RED. The font fix is ready for one bundled push to existing draft PR #619; new exact-head CI, shipping gates, human review and integration remain. The cause of earlier memory growth before the original OOM is still unknown.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
Unity 2021.3.45f1 now passes all modes at exact PR #619 head 5c74fd4: run 37711381000, DAD job 113097939114. Raw XML confirms both repaired cases Passed (HarvesterRescansReuseTheSharedPassiveSettingsCache and CompilerDiagnosticCapturesPairExactOutputWithTriggeringCode). EditMode 999 passed, zero failed, 11 existing skips; PlayMode 1522/1522 and Standalone 1518/1518 pass with zero skips/failures. Acquisition, license return, cleanup classification, lock release and confirmed-cleanup gate all pass.
Artifact SHA256s: EditMode c068605a29fd19f12a52f914542fd987738d1142f8cdf5693ff2904e5f95ef91; PlayMode 5727ff0ad57c4e282fad967a2ab0b7c6844957647128ed5cb602b2de0f1cdd17; Standalone 2c623063646aabedde4c213f375c93756d8f6b52c073483f6a582b2b2ad82e19. Retained ZIPs, raw job and mode proof: .artifacts/perf-lab/613-settings-cache/pr619-5c74-unity2021/.
This confirms the cold-style cache defect and fix on the supported floor, alongside the existing pending-compilation handoff. New-head remaining Unity versions, shipping verification, human review and integration remain pending. The earlier OOM memory-growth cause remains unknown; this issue stays open.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
Exact PR #619 head 5c74fd4 now has a successful ordinary Unity CI aggregate (run 37711381000). All four version jobs completed successfully. The 2021, 2022 and 6000.3 raw mode XML and central cleanup have been retained and checked; 6000.5 raw retention is next.
Next verification question: does this exact shipping package preserve runtime/AOT behavior across the supported endpoint editors and all declared stripping/cardinality cells? Baseline: the ordinary modes pass, but no exhaustive shipping verdict is retained for this exact head. Hypothesis: the editor cache and capture corrections preserve the shipped runtime behavior.
Use the maintained Unity Tests workflow with shipping_fidelity=true and shipping_native_payload=true, incremental and consumer-install modes false, on the existing review branch after checking its exact remote ref. This runs the existing 20 shipping cells per endpoint: Minimal/Low/Medium/High x semantic-18/cardinality-1/16/256/1000, with High semantic native payload retention. The regular mode gates and central editor validation/acquisition/return/classification/release/confirmed cleanup remain intact.
GREEN: actual per-cell semantic proof, profile/source/player manifest identity, readable matrix summaries, sealed evidence and retained payload checks, plus terminal successful cleanup on both Unity 2021.3.45f1 and 6000.5.2f1. Stop and investigate any cell, profile, artifact, license or cleanup failure; keep all failed evidence, no skipped cell, timeout increase, partial-success claim, selective rerun or runner provisioning. Dispatch once, observe the same handle; no claim that these characterization cells establish timing calibration or throughput parity. Evidence will remain under .artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
The exhaustive shipping request was accepted once as run 37713045950, created 2026-10-08T01:27:47Z at exact review head 5c74fd4. Inputs shipping_fidelity=true, shipping_native_payload=true, incremental=false, consumer=false. The remote-ref/request/accepted-run proof is retained in .artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/. No earlier active manual run existed on this branch; the PR matrix was terminal before dispatch. Observe this same handle through all cells, artifacts and central cleanup; do not redispatch after an observation timeout.
All 12 ordinary-mode raw XMLs now verify at the exact head, including both repaired Editor cases on all four versions. Unity 2021/2022/6000.3 have EditMode 999 passed/0 failed/11 existing skips, PlayMode 1522/1522 and Standalone 1518/1518. Unity 6000.5 has EditMode 999/0/11, PlayMode 1521/1521 and Standalone 1517/1517; its pre-existing capability-dependent counts match the preceding head. Every raw version job verifies successful acquire, return, classify, release and cleanup gate. Retained proof locations: pr619-5c74-unity2021/ and pr619-5c74-matrix/. Static CI and ordinary Unity aggregates pass; performance workflow also reports successful completion and its raw artifact retention is next. Shipping remains pending; human review and integration remain required.
wallstop commentedon Oct 8, 2026
DISCLOSURE: LLM-GENERATED TEXT
The exact-head performance artifacts are retained and checked: run 37711380137, head 5c74fd4. Internal Standalone 208/208 pass with zero skips; comparisons Standalone 470 pass/zero fail/66 unsupported-library capability skips; the same comparisons artifact also contains allocation-honesty PlayMode XML with 5/5 passed and zero skips. All 66 reasons identify unavailable semantics in comparison libraries, not missing DxMessaging target coverage. Both raw jobs pass acquire/return/classify/release/confirmed-cleanup.
ZIP SHA256s: comparisons e01e55b41e8f6a4692bc8f5adab60490cd02530512b8f232bbc3f3cada95b649; internal a58c10d362a27bd7bf9dc4d4fcd4a083d0e4055fa2275515f63429440be293a6. Proof, raw jobs and ZIPs: .artifacts/perf-lab/613-settings-cache/pr619-5c74-performance/. Standalone allocation unavailability remains distinct from measured zero; these green jobs do not establish confirmatory variance, power or parity.
Exhaustive shipping run 37713045950 is actively executing Unity 2021's stripped-player cells under the central lock; observe that existing handle to artifacts and terminal cleanup. PR body now distinguishes completed ordinary/performance gates from pending exhaustive shipping, unknown prior memory-growth cause, human review and integration.
wallstop commentedon Oct 8, 2026
Acceptance evidence was checked against the current tested PR source
5c74fd4cef7956d027f5a061caf96dffde026343.All five cache production files still match the original native evidence SHA-256 exactly. The later lookup-test change handles pending compilation through the Unity test framework; its current raw four-version Editor results passed. The original native evidence was rechecked on disk: 20 raw result/ownership/cleanup files and 32 supporting files, plus the immutable archive and manifest, retain their recorded bytes.
The bounded raw observations contain 16 paired phases, 64 calls per arm, 64 legacy searches versus zero cached searches, and 31,324 asset paths on Unity 6000.4.6f1. All four real AssetDatabase import/delete/asset-move/folder-move tests passed. Removing notification forwarding retains three expected failures, including the absent-to-present transition without domain reload.
The five acceptance criteria are mapped in ignored
613-settings-cache/acceptance-audit-s367.json. Passive callback checks include unchanged production guards, native notification tests, and source-linked boundary tests; the latter use Unity doubles and remain a distinct scope. The sanitized original crash facts stay in this issue; the license-bearing raw crash log is not in the public archive.The original immutable publication is unchanged. These observations support removal of repeated settings searches. They do not establish a throughput ratio, leak/retention result, or explanation of the earlier native memory growth. The issue's explicit remaining-unknown option is the supported outcome for that first criterion; no exhaustion was attempted in the shared editor.
Keep this issue open for human review and integration. Shipping validation 37713045950 is still running, and its exhaustive player verdict remains pending.
wallstop commentedon Oct 8, 2026
The oldest supported endpoint in shipping run 37713045950 now has a verified retained verdict at exact PR source
5c74fd4cef7956d027f5a061caf96dffde026343.Unity 2021.3.45f1 job 113103173345 passed all 20 cells: Minimal/Low/Medium/High stripping × semantic-18/cardinality-1/16/256/1000. Raw build reports, profile bindings, positive/missing-root-mutant contracts, two consumer assembly inventory, unchanged before/after player manifests, and twenty distinct build start times were inspected. No failed or unreadable cells. Clean build-cache mode passed; the recorded project Library state was warm, not cold.
The maintained production bundle verifier and replay both returned zero over 541 retained files, bundle digest
110be11ab40b41f0cb9e5ec58494122ee00f580b4c7fe4ea691290e6f9295011. Shipping artifact SHA-256aadf730de34a593f77f381426ea4bf9a62d38f4bc3da78c80ae44cee164e6066; native-payload artifact SHA-25677a5ee2d5e466fa3031afd5e5bf3fe7d5651b551022291ba2c5cb67aaca93fe8.The High semantic retained executable, GameAssembly.dll and global-metadata.dat each match the exact source player-manifest bytes and length. The same job's raw ordinary results pass: Editor 999 passed / 0 failed / 11 existing capability skips, PlayMode 1522 / 0 / 0, Standalone 1518 / 0 / 0. Acquired lock, license return, cleanup classification, release and final cleanup gate all passed.
Retained proof:
613-settings-cache/pr619-shipping-s362/unity2021/endpoint-proof.json, raw job, five ZIPs and the extracted sealed shipping bundle. These are shipping correctness and characterization observations; no calibrated timing/parity claim. The full workflow remains active, with Unity 6000.5's 20-cell endpoint and remaining ordinary jobs still pending. Human review/integration remain required; no issue closed.wallstop commentedon Oct 8, 2026
The same shipping workflow's Unity 2022.3.45f1 and 6000.3.16f1 ordinary results are now verified from all six retained ZIPs and raw jobs at exact source
5c74fd4cef7956d027f5a061caf96dffde026343.Each version passed Editor 999 / 0 failures / 11 existing skips, PlayMode 1522 / 0 / 0, and Standalone 1518 / 0 / 0.
HarvesterRescansReuseTheSharedPassiveSettingsCacheandCompilerDiagnosticCapturesPairExactOutputWithTriggeringCodeboth passed in each Editor XML. Acquire, licensed work, return, cleanup classification, release and final cleanup gate succeeded in both jobs, 113103173247 and 113103173268.Evidence:
613-settings-cache/pr619-shipping-s362/ordinary-2022-6000.3/mode-proof.json, artifact metadata, all six ZIPs and raw job snapshots. An initial one-off inspector looked for the helper methodBuildCompileCaptureCasesas a test name; source and XML inspection identified its actual NUnit caller, and that caller's result was verified. This was an inspector assumption, not a CI test failure or rerun.Nine ordinary mode XMLs across the first three versions now validate in this manual workflow, alongside Unity 2021's 20-cell endpoint/native payload proof. Unity 6000.5's job 113103173264 and its exhaustive shipping endpoint remain live/pending in run 37713045950. Keep the full verdict pending; human review/integration remain required.
wallstop commentedon Oct 8, 2026
Complete shipping evidence verified at PR #619 head
Shipping run 37713045950 is terminal success at
5c74fd4cef7956d027f5a061caf96dffde026343. The preflight, all four Unity jobs and aggregate job 113130893537 succeeded. Each licensed job successfully acquired the central lock, returned its license, classified cleanup, released and passed the confirmed-cleanup gate.Both endpoints contain all 20 / 20 stripped IL2CPP cells: four stripping levels × semantic-18 and cardinalities 1/16/256/1000. Total 40 cells, no failed or unreadable entries. The maintained bundle verifier and replay both exit 0. Bundle digests:
110be11ab40b41f0cb9e5ec58494122ee00f580b4c7fe4ea691290e6f9295011(541 files).e7593bb4af501e0ba815716ae52410ed2bc58999cd52e449669a3ebe0ca53e9d(581 files).For every new-endpoint raw cell, exact canonical profile bytes/hash, Unity/topology, successful distinct build times, CleanBuildCache, Release IL2CPP/C++, empty player-output provenance, positive player, missing-root mutant, exact shape/count inventories and pre/post player manifests pass. Runtime UNITY_INCLUDE_TESTS is false; the consumer assembly inventory is exactly Assembly-CSharp and WallstopStudios.DxMessaging. Library state is warm, so this is not a cold-project claim.
Latest ZIP commitments: shipping artifact 11525777275 SHA-256
708cf78c91edd29f28a48bd5cb01a9146d0b2e25d94177878b4ad9544d016582; native payload 11525932000 SHA-2563d7338d51baf3612763a74ba2860c617543230f1dd09f4f56c939ae81c47a4cb. Its source-player manifest is byte-identical to the High semantic cell. All three retained role lengths/hashes match:ead801447b5ca90778f6cf2f35aab805bcbc57f404523399430cdb8474015a02.2e3ddde7bbe192b4b0768a73127358918b9cca77fa2e5f38d91f6c612f124ec9.432956249fed662ac87f62dffd3915b522295963313807ce3df722a622c66609.Current6000.5 ordinary XML reports Editor 999 passed / 0 failed / 11 documented skips; PlayMode 1,521 / 0 / 0; Standalone 1,517 / 0 / 0. Every exact test-case outcome and skip reason matches the prior same-source 6000.5 run. The aggregate Editor root label is Skipped:Ignored due to the existing graphics/manual capture skips; all 999 executed cases pass. Both repaired native cases pass. The other three versions' raw ordinary proofs were already retained and their ZIP commitments remain verified.
Retained complete workflow/raw-job/native proofs:
.artifacts/perf-lab/613-settings-cache/pr619-shipping-s362/complete-shipping-proof-s372.jsonandunity6000/endpoint-proof.json. This matrix is characterization; it establishes neither timing uncertainty nor formal parity/power. Memory growth before the original crash remains unproven. Human review and integration are still required; PR #619 remains draft and #613 stays open. No selective rerun, new source push, issue closure or original-publication byte change.