Repository navigation
Description
Verified on branch / awaiting merge
Production implementation: dd5979c613b0fe8ebd9f7026f25001ceee9f8cee. Delivered head: dbae93e8f211d45a69cdffdb6afa3a33a0af0fa5; the subsequent diff contains documentation/acceptance evidence only. Exact-head CI: Engine CI and NuGet dependency graph passed; all six checks on this exact head are successful. All applicable acceptance conditions for this issue are verified; unavailable physical/manual device checks are explicitly scoped, not reported passed.
Owner: SDK-evaluated Restore and process-owned loaded-package test. Implementation commits: 564e00d0, 4d0fdb0a.
Evidence: complete report, exact-head delivery attachment, portable test-case/raw-measurement/requirement indexes linked by the report. Specific proof: Contracts: NuGetLoadedIdentityTests; e16/process-owned-fixture: ten ordinary/isolated entries, forty parent scenarios.
Commands: official tests/Invoke-EditorUiAcceptance.ps1 Contracts/Workflows/Visual/Lifecycle/Products with SDK-selected independent outputs; complete source/entry preparation; formal InnoEngine.Build scripts --ide for the three companions; tests/Invoke-WikiChecks.ps1; controlled public performance fixtures where applicable. The report records original command owners, TRX/binlogs, negative tests, failures, skips, input hashes and device limits.
Profiles overlap; do not sum their pass counts into a distinct-test claim. Windows-only sharing fixtures and Unix-only filesystem fixtures are scoped to the executing host. Real native contexts/simulated display metrics and hidden product feature journeys are not a claim of physical display, OS IME or manual Mac testing. No BGCS/vendor/package/generated-binding modification, parallel Core system, test hook, IVT or private reflection was used.
Keep this issue Open. PR #26 includes an individual Fixes #16 and will close it only when the user merges to master. No automatic merge or premature master-resolution claim.
Original defect, ownership and accepted work
The following baseline observations describe the issue as opened. The verification above supersedes intermediate pending checkpoints; original failed/negative logs remain preserved. Acceptance checkboxes are checked only after the exact delivery-head verification completes.
Confirmed false failure
tests/build/Inno.Build.Tests/NuGetBindingDependencyTests.cs reads the fixed default obj/project.assets.json instead of the assets file used by the actual build.
Reproduction
Run the test project with SDK ArtifactsPath pointing at an isolated owned output. The default obj can contain BGCS.Runtime 4.1.0 while the actual isolated assets and current lock resolve 4.1.1. The test incorrectly compares the stale default identity to the loaded 4.1.1 assembly. A fresh clone without default obj is also unsupported by the hard-coded read.
Expected: obtain the exact evaluated ProjectAssetsFile/restore scope for the tested project and validate that identity. Do not hide the failure by deleting caches, restoring another output, copying assets or reading a fallback path.
Acceptance
- Default and isolated ArtifactsPath runs pass using their own evaluated inputs.
- A missing unrelated default obj does not fail isolated tests.
- An actual package/load identity mismatch still fails.
- Ordinary and process-isolated entry points consume the same correct scope.
- Preserve package isolation and the existing VSTest/xUnit platform.
Evidence: audit F09 and artifacts/acceptance/core-audit-2026-10-24/test-assets-path-mismatch.json. This failure does not indicate a production BGCS 4.1.0 dependency.
Activity
FLwolfy commentedon Oct 27, 2026
Verified additional branch acceptance through the real SDK and public loader: e16/loaded-package-shared.trx has 3 passes (default output, isolated output with no default assets, isolated output with deliberately stale unrelated default assets). e16/loaded-package-isolated.trx has 1 pass in a fresh host. Every case reads the actual evaluated ProjectAssetsFile, resolves the selected runtime asset, and compares it to the actually loaded BGCS.Runtime assembly. The negative case loads a test-owned copied payload whose bytes differ while assembly name and MVID remain identical, and proves the content check rejects it. The collectible negative-test context passes full GC/finalizer/full GC weak-reference retirement. Original NuGet files and archives remain untouched. Final full-suite/CI evidence and commit are pending; issue stays Open awaiting PR #26 merge.
FLwolfy commentedon Oct 29, 2026
The extended full Contracts run found an intermittent test-owner cleanup failure: one loaded-package negative case passed its collectible-context weak assertion, then Windows refused deletion of the test-owned mismatched BGCS.Runtime.dll. The restored/global package was not modified. This is not yet attributed to BGCS. The next diagnostic will also weakly monitor the loaded Assembly and retain the exact failure/cleanup boundary; no unload assertion, timeout or production integrity check will be removed. Evidence: candidate-next/Contracts/7e2833f5448346a09253da45e91aa2cc/Contracts/execution.log.
FLwolfy commentedon Oct 29, 2026
The stronger normal-SDK fixture now verifies both the collectible context and the loaded Assembly are unreachable after the unchanged Full GC / finalizer / Full GC barrier. All three normal scopes pass. Ten additional sequential groups, each running the three normal scopes and the one isolated contract in separate VSTest hosts, pass all 40 executions with successful cleanup (candidate-next/identity-repeats). No retry, suppressed cleanup exception, timeout increase or package modification was added. Commit: test(build): verify loaded assemblies retire with their collectible contexts. The earlier one-off Windows file denial remains recorded without an unsupported root-cause/BGCS claim; the final complete suite must still pass.
FLwolfy commentedon Oct 29, 2026
Reproduced cleanup failure during final full-suite verification
The ordinary full Build suite at
1917b253reproduced threeNuGetLoadedIdentityTestscleanup failures: deleting the fixture-ownedBGCS.Runtime.dllreturnsUnauthorizedAccessExceptionafter the collectible-load probe. The global package remains unmodified; its observed file attributes are Archive, not ReadOnly. The original raw execution log is retained undercandidate-1917b253/Contracts/5696b1bd510d4465ae1544b4b6e61c05/Contracts/execution.log. Cleanup currently occurs in the same test process that physically loaded the negative DLL, and the cleanup exception can obscure an earlier failure, so this is not yet assigned to BGCS or a proven independent native-loader cause.I am validating a strict ownership correction using the existing test-process invocation pattern: the actual on-disk mismatch load and unchanged full-GC/weak-context/weak-assembly checks execute in an owned child; the parent retains the fixture directory until that process has completely exited, then performs normal deletion. This preserves physical loaded-path/content evidence and every mismatch/unload assertion, without LoadFromStream, package edits, ignored cleanup, relaxed deadlines, private reflection or a production test entry. The complete suite continues collecting its current failures before replacement verification. This issue and PR remain unclosed.
FLwolfy commentedon Oct 29, 2026
Owned process correction committed; focused verification passes
Pushed
4d0fdb0a47a90fdcf266b40c415f889afc268b81as Aaron Liao, without co-authors. Production code is unchanged from1917b253; only the existing test fixture and its focused record changed. Parent SDK restore/output ownership checks remain intact. Actual physical mismatch loading, same-name/same-MVID/content rejection and both strict weak-collection assertions execute in the owned child; normal parent cleanup follows full child exit. No assertion, deadline or cleanup failure is suppressed.All four public cases pass. Ten complete ordinary/required-isolated entry repetitions pass, covering40 parent scenarios and their child probes with nonempty verdicts. Focused ownership report records original failures and limits. The independent prototype remains separately identified.
The replacement final candidate is now rebuilding and rerunning the full applicable acceptance/CI. Keep Open / awaiting complete branch verification; PR #26 remains Draft.