Phase 3 PR 39 — LiveStackFixture skip-with-reason for elevated shells #38
Reference in New Issue
Block a user
Delete Branch "phase-3-pr39-elevated-shell-skip"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Operationally-confusing failure mode I hit during the PR 38 install workflow: an elevated PowerShell window can't connect to the
OtOpcUaGalaxyHostnamed pipe, even when the user is in the pipe's allow list. The pipe ACL (decision #76 /PipeAcl.cs) explicitly denies Administrators, so the elevated token's Admins group membership trumps the user's allow rule. The probe surfaces it asUnauthorizedAccessExceptionwhich is technically correct but takes about five steps to diagnose ('the user IS in the allow list, why?').What changes
LiveStackFixture.InitializeAsyncnow runs an early Windows-only check viaWindowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator)and short-circuits with a SkipReason that names the cause directly:The pre-existing
ParityFixture(PR 18) already does the same thing for the same reason.LiveStackFixture(PR 37) didn't — this matches it.Why before the prereq probe
AvevaPrerequisites.CheckAllAsyncincludes a 2s named-pipe probe that hits the same admin-deny and surfacesUnauthorizedAccessExceptionwith no context. Short-circuiting earlier saves the 10-second probe + produces a single actionable line.Tests
Verified manually from an elevated bash session against the just-installed
OtOpcUaGalaxyHostservice — skip message reads as quoted above. Proxy.Tests Unit: 17 / 0 unchanged (fixture change is non-breaking; existing tests don't run as admin in normal CI).Bonus
Gitignored
.local/so per-install secrets (the Galaxy.Host shared-secret file written during the install workflow) don't leak into the repo.