Repository navigation
Expose selective retirement of superseded managed-viewer routes through existing MCP lifecycle owner #519
Description
Selective retirement of superseded managed-viewer routes is not MCP-exposed
Owner and scope
Requested implementation/integration owner: parent OpenHCS integration, the
existing mounted-route/display lifecycle owner for #302/#308. Linnaeus's #131
memory-attribution investigation remains separate. Root #394's compiler and
materialization seams remain protected; no source patch or scientist contact
was performed. This is an absent public lifecycle capability, NOT a proved leak.
Original technical evidence
Current C39 output root:
/home/ts/wt/openhcs-issue-batch-20260929/next-bbbc039-repeat88-20261003/BBBC039_REPEAT88/author-workspace/output
REPORT.md records 16 authored attempts, 13 submitted executions and terminal
ABSTENTION. Job-13 / 239cf267-5423-4d83-b94e-0fe6f17ce56e has no original terminal
response and must not be replayed or inferred complete from partial files.
runtime/terminal-scope.txt: Result=oom-kill, MemoryMax=4831838208,
MemoryPeak=4831944704. runtime/mcp.stdout line171768 reports layer_count111
with errors[]; its envelope also reports component_group_count109 and
component_item_count309. A later route-filtered response at188489 reports
component_group_count111 while layer_count1: a filtered count is not global
scene size. These are retained state observations, not process/buffer memory
attribution. runtime/terminal-custody.json retains dead-client closure limits,
absent native/MCP PIDs and refused endpoints; individual child exit codes unknown.
Actual exposed contract and original owners
Reviewed remote main236644e43b6c88e56cbab0397668a9d4f3751233 and the original
installed505 agent/capability files, read-only. C39's original CLI help and calls
expose navigate-viewer/isolate-viewer/state/payload tools, not selective retirement.
- IsolateViewerWindowLayersCapability: openhcs_isolate_viewer_window_layers;
ViewerWindowLayerIsolationRequest -> ViewerLayerIsolationControlOptions ->
ViewerWindowService/ZMQViewerWindowGateway ->
NapariLayerIsolationControlMessageAction. This family changes visibility,
selection and navigation only; mounted layers and payload stores remain. - openhcs_get_viewer_window_state -> NapariViewerStateProjection: layer_count
follows the selected route projection; component_group_count is the entire
existing group store. No data arrays need to be resolved for this observation. - NapariComponentAwareDisplayCoordinator._reconcile_deleted_layer already
purges layer_route_state, component_groups and component_values when a native
layer was removed. This internal behavior is not a public removal command. - clear_accumulated_stream_state intentionally keeps mounted raw/results and
their domains; deleting those on every new execution would regress Pipeline viewer reset drops manual raw payload inventory and mis-scales same-source output #302. - Whole-window close exists but cannot preserve the user's current raw/result
scene. CLEAR_STATE is an internal producer control, not selective retirement. - ViewerReviewAuthoringContext routes viewer_review to the existing canonical
viewer-qa.md via openhcs_viewer_qa. No second skill/registry is needed.
No compatible exact-route retirement capability was found in the current
capability declarations, request/gateway family or native control action family.
No live MCP request, scientific table/image/answer inspection, replay, runtime
launch, installation or scene mutation was performed for this diagnosis.
Bounded infrastructure reproducer and acceptance
After a separately released engineering slot, use a tiny synthetic source and
one public managed viewer. Mount a raw reference, two distinct completed
candidate result routes and a needed regression reference. Capture/freeze the
earlier candidate. Through the existing typed capability/control family,
selectively retire ONLY that candidate's exact routes. Require native-layer,
payload/group, pending-display-work and component-domain retirement through
their existing owners; surviving raw/current/reference data identities,
calibration, axes/camera and matched QA must remain correct. Repeat retired
candidate cycles under a bounded scope and record per-process RSS/PSS, scope
memory and route-owned retention. Native allocations need not immediately
return RSS to baseline; do not equate that with a failed reference release.
Reject missing/stale/foreign route identities without collateral removal;
retain in-flight and UNKNOWN custody rather than cancelling unseen work. Verify
shared-axis reprojection and pending settlement with #308's original owner.
Source controls and installed public native acceptance remain required; this
receipt claims only read-only source/recorded-contract qualification.
Activity
trissim commentedon Oct 3, 2026
Singer is assigned source investigation; published draft #522 at e1bd295 on merged-main f7de9ef. No selective-retirement implementation is present in current open PRs; parent remains #302/#308 integration owner. Relevant viewer/MCP/DTO/service bytes are equal to current Root394 4c636a2; its core/persistence seams remain excluded. Exact shared-hunk proposal is in docs/validation/viewer-selective-retirement-519-20261003.rst: reuse NapariComponentAwareDisplayCoordinator deleted-route recipe, original route-state/settlement/batch-release hooks and display-work/reprojection owners; one typed registered native action/capability, no generic MCP switch or second retirement store. Parent302/308: please reserve or identify overlap for only these coordinator/route-state/display-work hunks before production edits. Complete bounded static family/dependency/scene evidence is published; no runtime or scientific contact. Completed settlement tuples retain update items, whereas actual PolyStore batch processors hold only the server; neither observed OOM is attributed to a leak. Original UNKNOWN and first source-tool WorkingDirectory failure are preserved. This is a source checkpoint, not a working retirement or native acceptance claim.
Merge pull request #522 from OpenHCSDev/investigate/selective-viewer-…
trissim commentedon Oct 5, 2026
Implemented by merged PR #522 (cc94228). Selective exact-route retirement is now a typed MCP lifecycle capability with producer checks and original scene/domain owners. Receiving16 verified the installed public raw/Points/Shapes 3-to-2 domain transition, surviving source A03 frame, selected Points and Shapes rows, calibration and immediate pre/post camera state, followed by exact closure. Source-owner review confirms the selected-highlight overlay is not a demonstrated geometry regression. Historical failures remain preserved. Closing the missing-capability issue; this does not claim a general memory-leak cure or immediate RSS return. Memory attribution and any concrete remaining leak stay separate.