Skip to content

Content indexing issues GetDataRequest through the mesh hub instead of ReadIssuingHub — indexed document silently misses the search index #5726

Closed as duplicate

Description

@systemorph-com

What is failing: The content indexing pipeline in MeshWeaver.ContentCollections.Indexing (ContentIndexingObserver.RegisterCollection, via MessageHubExtensions.Observe at MessageHubExtensions.cs:118) issues its one-shot GetDataRequest for the collection being indexed through the mesh hub itself. The mesh hub is the router and must never be the sending end of a work delivery — a bounded read has to be posted through MeshExtensions.ReadIssuingHub().

Probable cause: High confidence. The log's own diagnostic text lays out the contract and the stack trace pins the offender: ContentIndexingObserver.RegisterCollection (ContentIndexingObserver.cs:179) constructs a GetDataRequest targeting the collection namespace (Hardware) and posts it with the router as sender instead of hopping it onto the read-issuing seam. The concrete instance was indexing a PDF in the Hardware namespace. Because such deliveries fail silently, the affected file is likely silently missing from the content search index.

Impact: Single occurrence, single pod, one document. A document's search index entry is silently absent — a secondary-path defect with a trivial workaround (re-index), but the silent-failure mode makes it worth fixing properly.

Where to look: ContentIndexingObserver.RegisterCollection (ContentIndexingObserver.cs:179) and the Observe call site (ContentIndexingObserver.cs:226) — replace the hub used to post the GetDataRequest with MeshExtensions.ReadIssuingHub() (this is a read, not a node lifecycle write or stream subscription, so the other two seams do not apply).

No existing incident or issue found for this call site — this appears to be a first report.


Evidence

Fingerprint 29d15c79f382bcd8
Category MeshWeaver.Messaging.MessageHub
Severity Error
Top frame MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
Namespace memex
Pods memex-portal-deployment-56fbdcd48f-sz5st
Occurrences 1
First seen 2026-09-24 09:25:06Z
Last seen 2026-09-24 09:25:06Z
Routing not determined — no configured route matches the category MeshWeaver.Messaging.MessageHub. This repository is the configured fallback, not a finding about who owns the fault; the category names the LOGGER, which may not be the subject.
Recent log lines
2026-09-24 09:25:06Z memex-portal-deployment-56fbdcd48f-sz5st fail: MeshWeaver.Messaging.MessageHub[0]
      ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender (sender: mesh/bCaJQ_o0BkCLQOndmSjN6A, target: Hardware). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
         at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
         at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver.RegisterCollection (ContentIndexingObserver.cs:179)
         at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver+<>c__DisplayClass10_0.<IndexFileActivity>b__0 (ContentIndexingObserver.cs:226)
         at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingActivity+<>c__DisplayClass0_1.<Run>g__Run|1 (ContentIndexingActivity.cs:197)
         at MeshWea…[truncated]

Re-addressed by the current identity function: this incident inherited 0ab99a8a5e31aa8c (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

Opened automatically from Admin/_LogIncident/29d15c79f382bcd8. Recurrences are folded into this issue rather than opening new ones.
It also stands for the whole log site 40f55b17f23fa9b3: other fingerprints of this site fold in here as comments rather than opening tickets of their own.

Activity

  1. added
    bugSomething isn't working
    sev:MMedium - secondary path broken, or easy workaround
    on Sep 26, 2026
  2. systemorph-com commented on Sep 26, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (2 total).

    • Last seen: 2026-09-25 13:24:30Z
    • Pods: memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 09:25:06Z memex-portal-deployment-56fbdcd48f-sz5st fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender (sender: mesh/bCaJQ_o0BkCLQOndmSjN6A, target: Hardware). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver.RegisterCollection (ContentIndexingObserver.cs:179)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver+<>c__DisplayClass10_0.<IndexFileActivity>b__0 (ContentIndexingObserver.cs:226)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingActivity+<>c__DisplayClass0_1.<Run>g__Run|1 (ContentIndexingActivity.cs:197)
             at MeshWea…[truncated]
    2026-09-25 13:24:30Z memex-portal-deployment-56fbdcd48f-cbms9 fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender (sender: mesh/k5pyf8aibUmLMPut7lsCSg, target: Events). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver.RegisterCollection (ContentIndexingObserver.cs:179)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingObserver+<>c__DisplayClass10_0.<IndexFileActivity>b__0 (ContentIndexingObserver.cs:226)
             at MeshWeaver.ContentCollections.Indexing.Graph.ContentIndexingActivity+<>c__DisplayClass0_1.<Run>g__Run|1 (ContentIndexingActivity.cs:197)
             at MeshWeave…[truncated]
    

    Re-addressed by the current identity function: this incident inherited 0ab99a8a5e31aa8c (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  3. rbuergi commented on Sep 26, 2026

    @rbuergi
    Contributor

    Fixed in Systemorph/MeshWeaver.Plugins#2355 (merged 2026-09-24 12:16Z, c9e7c4b77). That PR is "fix(indexing): issue the collection-config read off the router". RegisterCollection no longer issues its GetDataRequest from the mesh router. CollectionConfigReadIssuedOffTheRouterTest pins the change, and it reproduces the stack quoted in this issue.

    Both occurrences ran on images without the fix.

    The fix is now deployed on both portals.

    • memex: 3.0.0-ci.9332 since 04:06Z today. Its Plugins half is 1470fbf (CD run 36098618978, HEAD is now at 1470fbf).
    • memex-cloud is rolling to 3.0.0-ci.9349, Plugins 5e8b85f.
    • git merge-base --is-ancestor c9e7c4b77 returns 0 for both.

    #5724 was the answering half of the same two deliveries (same pod, same second). It is closed as a duplicate of this issue.

    Closing as completed. The recurrence bot reopens this issue if the stack fires on 5dbb7df97b or on any later ReplicaSet.

    Not established. The fix has been live for about 2 h on memex. At the observed rate of one hit per day, a quiet window that short says nothing on its own. The closure rests on the ancestry above and on the PR's negative-control test, not on a clean window.

  4. systemorph-com commented on Oct 1, 2026

    @systemorph-com
    ContributorAuthor

    Folded in — a DIFFERENT fingerprint from the same log site.

    This issue tracks the log site 40f55b17f23fa9b3 (MeshWeaver.Messaging.MessageHub), and these occurrences belong to it. They carry their own fingerprint — the masking split one site across several — so before this they would have opened a SEPARATE ticket. One log site fanned out into 46 of those, which is why they fold here instead. Nothing is discarded: the distinguishing evidence is below, and splitting this back out is a person's call.

    Folded fingerprint 767f3a18a347248f
    Log site 40f55b17f23fa9b3
    Category MeshWeaver.Messaging.MessageHub
    Severity Error
    Top frame MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
    Detail ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the {id} hub as sender AND target (sender: {path}, target: {path}). The {id} hub is the ROUTER and must not be an end of a work delivery. If the role above includes '{value}', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#{n}). If the role above includes '{value}', ask where that target {id} FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#{n}). '{value}' means both apply. Reported once per role+type for this hub. Call site:
    Namespace memex
    Pods memex-portal-deployment-65b5c866cd-6bkwh
    Occurrences 1
    First seen 2026-10-01 00:20:11Z
    Last seen 2026-10-01 00:20:11Z
    Already folded here 1 fingerprint(s)
    Incident Admin/_LogIncident/767f3a18a347248f
    Triage called it MeshOperations.TryResolveUnifiedPath posts its unified-path read from AND to the router hub — GetDataRequest with mesh/{id} as sender and target
    What triage wrote about this fingerprint

    What is failing

    MeshWeaver.AI.MeshOperations.TryResolveUnifiedPath (MeshOperations.cs:1342) posts the one-shot GetDataRequest it uses to resolve a unified path from the DI-injected root IMessageHub — which is the router — and in this occurrence the delivery was addressed at the router as well (sender and target both mesh/{id}). Work-read traffic executing on the router's action block competes with routing; this is the same defect class as the 2026-06-11 production wedge, where node work on the router starved real SubscribeRequest traffic.

    Probable cause

    High confidence on the sender half — this is a known, documented residue, not a new defect. #4463 proved in production that MeshOperations' hub field is the router; #4477 hopped only the DisposeRequest line, leaving sibling exchanges on the identical field posting as mesh/{id}. This exact call site was filed as #4616 (then at MeshOperations.cs:1255) as one of those siblings — the "UCR read" that Doc/Architecture/RouterTrafficDetection still lists un-hopped. Neither ratchet guard sees it: GetDataRequest is not a lifecycle message, and the receiver-keyed guard only covers files that have already declared a seam. The frame has moved 1255→1342, so the code around it has changed without the read being hopped.

    The target half is new relative to #4616's sample (where the target was an ordinary node path): here the read was addressed at the mesh hub itself. Moderate confidence, evidence points at the unified path being resolved coming out as — or falling back to — the mesh root, so the read never left the router in either direction. That derivation needs a look at how TryResolveUnifiedPath computes the target address for a root-level path; if the call site genuinely chose mesh/{id} as the destination, the read should be addressed at the owning node (MeshExtensions.NodeOperationTarget()), not at the router.

    Impact

    Single occurrence, single pod; the origin site's once-per-role+type dedup caps it at ~2 lines per process, so log volume is self-limiting. No current user-visible failure is evidenced — the risk is the documented starvation/wedge class if this read (or a burst of it) executes on the router's block. Secondary path (unified-path resolution inside AI/mesh operations) with a well-understood, low-risk fix.

    Where to look

    MeshWeaver.AI.MeshOperations.TryResolveUnifiedPath (MeshOperations.cs:1342) — hop the read onto hub.ReadIssuingHub() (this is a bounded one-shot READ: do not use NodeOperationIssuingHub() or StreamSubscribingHub(), the three seams are not interchangeable and the wrong one fails silently), and check the target derivation for paths that resolve to the mesh root. Reference shape: MeshService (hops both IssuingHub + NodeOperationTarget). Background and the ratchet design that should be extended to cover this class: Router Traffic Detection (mesh: Doc/Architecture/RouterTrafficDetection).

    Likely tracked by #4616 — same call site and same proven-router field for the sender role; a human can fold this into #4616 if it is still open. This occurrence adds the target role (read addressed at the router), which #4616's evidence did not show, so the call site is worth a look even if #4616 is closed.

    Reopened — this fault is happening again.

    Still occurring: 1 more since the last update (1 total).

    • Last seen: 2026-10-01 00:20:11Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh
    Recent log lines
    2026-10-01 00:20:11Z memex-portal-deployment-65b5c866cd-6bkwh fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/iPPS4W--bUmoMZQ9pd0ZTQ, target: mesh/iPPS4W--bUmoMZQ9pd0ZTQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  5. systemorph-com commented on Oct 1, 2026

    @systemorph-com
    ContributorAuthor

    Folded in — a DIFFERENT fingerprint from the same log site.

    This issue tracks the log site 40f55b17f23fa9b3 (MeshWeaver.Messaging.MessageHub), and these occurrences belong to it. They carry their own fingerprint — the masking split one site across several — so before this they would have opened a SEPARATE ticket. One log site fanned out into 46 of those, which is why they fold here instead. Nothing is discarded: the distinguishing evidence is below, and splitting this back out is a person's call.

    Folded fingerprint 767f3a18a347248f
    Log site 40f55b17f23fa9b3
    Category MeshWeaver.Messaging.MessageHub
    Severity Error
    Top frame MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
    Detail ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the {id} hub as sender AND target (sender: {path}, target: {path}). The {id} hub is the ROUTER and must not be an end of a work delivery. If the role above includes '{value}', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#{n}). If the role above includes '{value}', ask where that target {id} FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#{n}). '{value}' means both apply. Reported once per role+type for this hub. Call site:
    Namespace memex
    Pods memex-portal-deployment-65b5c866cd-6bkwh
    Occurrences 1
    First seen 2026-10-01 00:20:11Z
    Last seen 2026-10-01 00:20:11Z
    Already folded here 2 fingerprint(s)
    Incident Admin/_LogIncident/767f3a18a347248f
    Triage called it MeshOperations.TryResolveUnifiedPath issues its path-resolution read from and at the router hub
    What triage wrote about this fingerprint

    What is failing

    MeshWeaver.AI.MeshOperations.TryResolveUnifiedPath (MeshOperations.cs:1342, via MessageHubExtensions.Observe with a Rx Timeout) issues a one-shot GetDataRequest — a bounded path-resolution read — with the root mesh hub as both sender and target. The read therefore leaves from and executes on the router's action block, the block that also carries message routing for the whole process.

    Probable cause

    MeshOperations holds the DI-injected IMessageHub, which in the mesh's root container is the router — proven in production on this same field by #4463. The sender half is the familiar defect: this call site posts off the bare field instead of a seam (MeshExtensions.ReadIssuingHub() for a bounded read). The target half is genuinely ambiguous and must be answered at the call site: either TryResolveUnifiedPath chose the mesh hub as destination (e.g. as the resolution authority for root-scoped unified paths), or the observe helper defaulted the target to the posting hub's own address. Confidence is high on the sender half (the frame plus the field's #4463 lineage) and low on the target half — the evidence does not separate the two cases, which have different fixes, and #4697 is the recorded case of an auto-filed ticket over-generalising target-role advice.

    Note this exact shape — a post naming the receiver's own address — is structurally outside both src/ ratchets' denominators (the self-directed exclusion), so neither guard could ever catch it; the runtime ORIGIN line is the only instrument for it, consistent with this being a fresh sighting rather than a guard regression.

    Impact

    No user-visible failure yet — the read keeps working, and the detector never blocks. The ORIGIN site dedups per (role, message type) per hub lifetime, so the true call frequency behind this line is unknown, and TryResolveUnifiedPath is a hot helper for AI path resolution. The class is the one that wedged the portal in production on 2026-06-11 (work on the router's block starving real SubscribeRequest routing), though a single one-shot read is far lighter than that CRUD burst. Secondary-path defect with an easy fix → sev:M.

    Where to look

    Still occurring: 1 more since the last update (1 total).

    • Last seen: 2026-10-01 00:20:11Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh
    Recent log lines
    2026-10-01 00:20:11Z memex-portal-deployment-65b5c866cd-6bkwh fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/iPPS4W--bUmoMZQ9pd0ZTQ, target: mesh/iPPS4W--bUmoMZQ9pd0ZTQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  6. systemorph-com commented on Oct 2, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (2 total).

    • Last seen: 2026-10-02 11:24:49Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh, memex-portal-deployment-df798b484-cr6jn
    Recent log lines
    2026-10-01 00:20:11Z memex-portal-deployment-65b5c866cd-6bkwh fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/iPPS4W--bUmoMZQ9pd0ZTQ, target: mesh/iPPS4W--bUmoMZQ9pd0ZTQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-02 11:24:49Z memex-portal-deployment-df798b484-cr6jn fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/DDCGD_ql30-qafE8_aWl1Q, target: mesh/DDCGD_ql30-qafE8_aWl1Q). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  7. systemorph-com commented on Oct 4, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (3 total).

    • Last seen: 2026-10-04 00:50:47Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh, memex-portal-deployment-df798b484-cr6jn, memex-portal-deployment-7d8d8b5cc6-lwwvq
    Recent log lines
    2026-10-01 00:20:11Z memex-portal-deployment-65b5c866cd-6bkwh fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/iPPS4W--bUmoMZQ9pd0ZTQ, target: mesh/iPPS4W--bUmoMZQ9pd0ZTQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-02 11:24:49Z memex-portal-deployment-df798b484-cr6jn fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/DDCGD_ql30-qafE8_aWl1Q, target: mesh/DDCGD_ql30-qafE8_aWl1Q). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-04 00:50:47Z memex-portal-deployment-7d8d8b5cc6-lwwvq fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/xSeDOFNZzE2u5lcxKJdZBw, target: mesh/xSeDOFNZzE2u5lcxKJdZBw). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  8. systemorph-com commented on Oct 5, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (4 total).

    • Last seen: 2026-10-05 08:53:12Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh, memex-portal-deployment-df798b484-cr6jn, memex-portal-deployment-7d8d8b5cc6-lwwvq, memex-portal-deployment-848f664fd5-jgkbf
    Recent log lines
    2026-10-02 11:24:49Z memex-portal-deployment-df798b484-cr6jn fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/DDCGD_ql30-qafE8_aWl1Q, target: mesh/DDCGD_ql30-qafE8_aWl1Q). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-04 00:50:47Z memex-portal-deployment-7d8d8b5cc6-lwwvq fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/xSeDOFNZzE2u5lcxKJdZBw, target: mesh/xSeDOFNZzE2u5lcxKJdZBw). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-05 08:53:12Z memex-portal-deployment-848f664fd5-jgkbf fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/66fTDGLBlkWM8bvQjvaKkQ, target: mesh/66fTDGLBlkWM8bvQjvaKkQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  9. systemorph-com commented on Oct 6, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (5 total).

    • Last seen: 2026-10-06 22:38:09Z
    • Pods: memex-portal-deployment-65b5c866cd-6bkwh, memex-portal-deployment-df798b484-cr6jn, memex-portal-deployment-7d8d8b5cc6-lwwvq, memex-portal-deployment-848f664fd5-jgkbf, memex-portal-deployment-6bcdbb54fc-g9gh4
    Recent log lines
    2026-10-04 00:50:47Z memex-portal-deployment-7d8d8b5cc6-lwwvq fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/xSeDOFNZzE2u5lcxKJdZBw, target: mesh/xSeDOFNZzE2u5lcxKJdZBw). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-05 08:53:12Z memex-portal-deployment-848f664fd5-jgkbf fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/66fTDGLBlkWM8bvQjvaKkQ, target: mesh/66fTDGLBlkWM8bvQjvaKkQ). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    2026-10-06 22:38:09Z memex-portal-deployment-6bcdbb54fc-g9gh4 fail: MeshWeaver.Messaging.MessageHub[0]
          ROUTER_TRAFFIC ORIGIN: GetDataRequest was POSTED with the mesh hub as sender AND target (sender: mesh/m4y4k3SEWk25p9_OEovXnA, target: mesh/m4y4k3SEWk25p9_OEovXnA). The mesh hub is the ROUTER and must not be an end of a work delivery. If the role above includes 'sender', this post LEFT the router: hop it onto the seam that matches what this delivery IS — MeshExtensions.NodeOperationIssuingHub() for a node LIFECYCLE write, MeshExtensions.ReadIssuingHub() for a bounded one-shot READ, MeshExtensions.StreamSubscribingHub() for a remote stream SUBSCRIPTION. The three are NOT interchangeable and the wrong one fails SILENTLY: ReadIssuingHub() registers no handlers by design, so a subscription hopped onto it stops reporting AND stops receiving data (#4614). If the role above includes 'target', ask where that target CAME FROM, because the two cases have opposite fixes: if this call site CHOSE the router as the destination, the call site is the offender — address the owning node instead (MeshExtensions.NodeOperationTarget()); if the target was read off an incoming request or subscription (request.Subscriber, ResponseFor(delivery) — SubscribeAck, DataChangedEvent, StreamErrorEvent and StreamEndedEvent all are), then this call site is the innocent answering half and the hub to move is the one that SUBSCRIBED or REQUESTED (#4697). 'sender AND target' means both apply. Reported once per role+type for this hub. Call site:
             at MeshWeaver.Messaging.MessageHubExtensions.Observe (MessageHubExtensions.cs:118)
             at MeshWeaver.AI.MeshOperations+<>c__DisplayClass36_0.<TryResolveUnifiedPath>b__0 (MeshOperations.cs:1342)
             at System.Reactive.Linq.QueryLanguage+CreateWithActionDisposable`1.SubscribeCore
             at System.Reactive.ObservableBase`1.Subscribe
             at System.Reactive.Linq.ObservableImpl.Timeout`1+Relative+_.Run
             at System.Reactive.Producer`2.SubscribeRaw
             at System.Reactive.Linq.ObservableIm…[truncated]
    
  10. rbuergi commented on Oct 8, 2026

    @rbuergi
    Contributor

    Closing as a duplicate of #5937.

    This issue's own call site, ContentIndexingObserver.RegisterCollection, was fixed by Plugins#2355 and deployed (see the 09-26 closure above). What reopened it is the folded fingerprint 767f3a18a347248f: GetDataRequest … sender AND target at MeshOperations.TryResolveUnifiedPath (MeshOperations.cs:1342). Its five samples (2026-10-01..06) all carry that frame and none carries the indexing frame. That is the requester half of #5937, which tracks the answering half from the same exchange.

    Root cause and fix are in #5937 and #6293: an address-less unified path was being read from the router itself. The router is now never the target of that read. Regression test: AnAddressLessUnifiedPathReadFromTheRootMeshHub_NeverPutsTheRouterOnEitherEnd. With the fix disabled it reproduces this issue's line.

    If 29d15c79f382bcd8 (the indexing stack) ever recurs on an image containing Plugins#2355, that is a different defect and should reopen this issue.

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

    bugSomething isn't workingsev:MMedium - secondary path broken, or easy workaround

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions