Repository navigation
Admit viewer reuse inside atomic acquisition without restarting external viewers - #7
Conversation
|
Parent paired integration checkpoint: normally merged main3374aa8 into existing PR7, exact2c68a114.26 viewer-state/ACK/progress source cases PASS2.61s. Installed this reviewed source with paired OpenHCS159, offline in the existing venv; real fresh MCP stream/state/screenshot on isolated:88/5794 works with actual loopback data/control listeners. Second fresh MCP successfully externally attaches, streams and captures; exposed close succeeds, owned PID/listeners independently gone.113 paired final installed checks PASS6.45s. Opened actual bitmaps; synthetic transport only, not biological QA/presentation preservation. Original packaged158-metric screening still flags one ForeignAbsenceProbe at the original nominal visualizer.is_running query; source classification is owner-reported health, not raw private absence reconstruction. No screening-pass/guard waiver/global NRA claim. Full archive remains unfinished. Exact source, original failures, receipt limits and live evidence: https://github.com/OpenHCSDev/openhcs/blob/plan/issue-135-viewer-bind-20260929/docs/validation/viewer_current_main_integration_20260930.rst. Locally accepted installed/live checkpoint can ship without optional hosted CI under the explicit owner override; wider lifecycle races remain separate work. |
Scope
Paired backend correction for OpenHCS PR159/issue135 and its independent review:
OpenHCSDev/openhcs#159 (comment)
ViewerStateManager remains the only viewer registry and atomic acquisition owner.
An application-owned nominal
ViewerReuseAdmissionABCnow admits a healthyexisting instance under its lock, before returning it. The generic declaration
requires only the existing health contract; OpenHCS always supplies its concrete
process-launch admission. There is no viewer-kind switch, second cache, callback
policy predicate or acquisition pre-check.
Rejection leaves the existing viewer registered, running and unchanged. It does
not silently replace it or kill a process. A factory returning an already-live
external lifecycle is registered without calling start; callers retain the
existing readiness check. Ordinary new/stale acquisitions still start normally.
Evidence and limits
force-stop, readiness and subscription cases remain passing.
in4.84s, exercising real atomic acquisition for Napari and Fiji. Physical
process/network operations are controlled in those tests, not live readiness.
data/control socket tests pass in5.34s (57 deselected); no GUI/JVM started.
package installation or active blind runtime mutation has occurred.
Fresh actual viewer/MCP acceptance is pending the current frozen blind run's
released runtime slot. This draft does not claim all concurrent fresh/release
races or foreign endpoint shutdown authority are solved.