Skip to content

Phase 28C2B: add read-only Pimax Connect lifecycle observation - #12

Merged
Zaknin merged 1 commit into
mainfrom
phase/28c2b-pimax-connect-lifecycle-observation
Jun 18, 2026
Merged

Zaknin merged 1 commit into
mainfrom
phase/28c2b-pimax-connect-lifecycle-observation

Conversation

@Zaknin

@Zaknin Zaknin commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Why this exists

Phase 28C2 service restart was stopped before mutation because target validation showed that PiServiceLauncher is not a stable persistent runtime service. Historical Windows evidence includes ucrtbase.dll / 0xc0000409 / BEX64 failures, while persistent Pimax runtime components remain after launcher exit.

Implementation

  • Adds CLI-only pimax-connect-lifecycle-observe-json.
  • Adds schema pimax-connect-lifecycle-observation-v1.
  • Records bounded service/process transitions, cached registration evidence, explicit user markers, USB/PnP checkpoints, Windows events, and Pimax log tails.
  • Keeps full USB enumeration out of the fast sampling loop.
  • Adds synthetic tests for transient/repeated services, PID reuse, process topology, markers, partial failures, output validity, classification, and static no-mutation constraints.
  • Documents the observer and the rejected service-restart target.

No-mutation proof

The observer does not start/stop services, kill/restart processes, automate Pimax Play, mutate USB/PnP, run pnputil/devcon, or add bridge/TUI/overlay/Configurator actions. Phase 29B source, deployment, scheduled task, and watcher hash remained unchanged.

Validation

  • Supervisor, Configurator, and SteamVR host Release builds: passed.
  • C# tests: 162 passed.
  • Rust TUI tests: 12 passed.
  • MkDocs strict build: passed.
  • All diagnostic stdout smokes parsed as one JSON document.

Hardware scenarios

  • Green baseline: registeredReady, confirmed.
  • Physical white: software remained likelyPoweredOnAwaitingRegistration (documented limitation).
  • Blue idle: 12/12 awaiting-registration samples; no spontaneous recovery.
  • Connect only: 36/36 awaiting-registration samples; blue, unregistered, disconnected screen.
  • Connect plus physical headset USB reseat: reached confirmed registration; user observed green/registered.

Findings

PiServiceLauncher remained RUNNING on PID 6096 in both valid Connect scenarios. No launcher crash or PID transition occurred, so launcher behavior did not distinguish failure from success. DeviceSetting, PiPlayService, PiService, pi_server, PiPlatformService_64, and Pimax Play retained their PIDs.

At USB reseat, seven existing device identities changed from non-present/unavailable to present/started; EyeChip followed before green confirmation. PVRHome/overlay started and the Tobii eye-tracking service restarted after USB arrival. Registration became ready about 6 seconds after the USB marker.

Primary classification: A - Fresh USB arrival is the decisive missing trigger (high confidence). Core registration ownership remains unresolved.

Recommended next phase

Phase 28C3 - Controlled Exact-Device Software Re-enumeration During Active Pimax Connect Scan. This PR does not implement or execute that mutation.

@Zaknin
Zaknin marked this pull request as ready for review June 18, 2026 03:56
@Zaknin
Zaknin merged commit bcaea69 into main Jun 18, 2026
1 check passed
@Zaknin
Zaknin deleted the phase/28c2b-pimax-connect-lifecycle-observation branch August 19, 2026 18:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant