Skip to content

Expose selective retirement of superseded managed-viewer routes through existing MCP lifecycle owner #519

Closed

Description

@trissim

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

  1. trissim commented on Oct 3, 2026

    @trissim
    CollaboratorAuthor

    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.

  2. added a commit that references this issue on Oct 5, 2026
  3. trissim commented on Oct 5, 2026

    @trissim
    CollaboratorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions