Skip to content

Slow dispatch leg to Manufacturing import activity holds a routing slot and backs up same-stream legs past the 64-dispatch threshold #5703

Closed

Description

@systemorph

What is failing

The Orleans RoutingGrain (MeshWeaver.Hosting.Orleans) crossed its 64-dispatch back-pressure threshold in a ~43 s burst on the memex portal. On two pods this was pure load — episode counters rose monotonically (#12→#14) with every leg under 60 ms, so those episodes drained. On the third pod the same dispatch leg (delivery FtDKJDuwBUWf_MqcA6BkNQ → Manufacturing/_Activity/import-520c9070a542c55a-…) aged 7.0 s → 9.6 s across two consecutive crossings while both pool gauges (subscribing 0, waiting for a pool slot 0→1) say the leg is past its subscribe and the wait is downstream I/O, not a thread or pool shortage.

Probable cause

Moderate confidence (~50%): a single stream-dispatch leg to a Manufacturing import activity grain stalled in downstream I/O for at least ~10 s, holding its pool slot (slots are held dispatch-to-termination, including unbounded pre-timeout waits) while same-stream legs queued behind it — per-channel depth 52→56, ordered channels 1→2, classic head-of-line within one channel per issue #5009's channel model. Two data points cannot distinguish a slow-but-alive leg from a slot that never returns; if no higher-episode or clear line ever followed on activation 2fa0fbe4, treat it as a leaked slot and investigate with #5018's gauge semantics in mind.

Impact

Momentary, self-limiting: 24 lines in 43 s across 3 pods, no further recurrences on this fingerprint since 2026-09-24 06:25 (two days ago). Routing was throttled only while the threshold was crossed; at least two pods absorbed the load cleanly.

Where to look

MeshWeaver.Hosting.Orleans.RoutingGrain — the dispatch path for Manufacturing/_Activity/import-* destinations, and the leg-termination/slot-release code. The RoutingGrain source was not found in the mesh, so no direct link; this is one of a large family of same-site incidents on 2026-09-24 (many sibling _LogIncident nodes) — a human should correlate before digging. Related prior work referenced by the log site itself: #5009 (per-channel split), #5018 (pool gauge semantics).


Evidence

Fingerprint fbd27b4e342e917c
Category MeshWeaver.Hosting.Orleans.RoutingGrain
Severity Critical
Namespace memex
Pods memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx
Occurrences 29
First seen 2026-09-24 06:24:56Z
Last seen 2026-09-24 06:27:01Z
Routing not determined — no configured route matches the category MeshWeaver.Hosting.Orleans.RoutingGrain. 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 06:25:29Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [33f1d1f4#12 started 2026-09-24T06:25:29.0240853Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 39, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 43 ms — stream-routed → import/rqEHlOPNSkCV1G34WXuQ9A (delivery 1BcX4kA050-NB9_DY_ns9Q). Latest dispatch target import/rqEHlOPNSkCV1G34WXuQ9A — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so …[truncated]
2026-09-24 06:25:36Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [33f1d1f4#13 started 2026-09-24T06:25:36.0448227Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 45, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 58 ms — stream-routed → import/rqEHlOPNSkCV1G34WXuQ9A (delivery hmm9Dv_Tykyri07pnh81JQ). Latest dispatch target import/jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so …[truncated]
2026-09-24 06:25:36Z memex-portal-deployment-56fbdcd48f-sz5st crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [2fa0fbe4#1 started 2026-09-24T06:25:36.0539164Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 1 over 1 stream destination(s), deepest per-channel queue 52, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 7020 ms — dispatch → Manufacturing/_Activity/import-520c9070a542c55a-20260924062515042-475933a2 (delivery FtDKJDuwBUWf_MqcA6BkNQ). Latest dispatch target portal/reads-jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anyth…[truncated]
2026-09-24 06:25:38Z memex-portal-deployment-56fbdcd48f-sz5st crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [2fa0fbe4#2 started 2026-09-24T06:25:38.6247363Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 56, routing pool subscribing 0, waiting for a pool slot 1; oldest leg in flight 9591 ms — dispatch → Manufacturing/_Activity/import-520c9070a542c55a-20260924062515042-475933a2 (delivery FtDKJDuwBUWf_MqcA6BkNQ). Latest dispatch target portal/reads-jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anyth…[truncated]
2026-09-24 06:25:39Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [33f1d1f4#14 started 2026-09-24T06:25:39.0158456Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 60, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 28 ms — stream-routed → import/jll3sSZfx061jLrYC3JaUA (delivery qkQKBi0VJUKIDN2_YFDivA). Latest dispatch target import/jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so …[truncated]
2026-09-24 06:25:22Z memex-portal-deployment-76cf776847-9p7z4 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [cf7a46bc#13 started 2026-09-24T06:25:22.7104950Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 42 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 1, waiting for a pool slot 0; oldest leg in flight 5 ms — stream-routed → cache/rfD6RFrASE-1774FxdvuZA (delivery kVti59mbv0O4n2djxyEJPw). Latest dispatch target cache/rfD6RFrASE-1774FxdvuZA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so lik…[truncated]
2026-09-24 06:25:22Z memex-portal-deployment-76cf776847-5hflx crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [25890ef7#9 started 2026-09-24T06:25:22.9752512Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 39 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 1, waiting for a pool slot 0; oldest leg in flight 12 ms — stream-routed → cache/rfD6RFrASE-1774FxdvuZA (delivery SZ6PjQh8o02fH93ev3d8-A). Latest dispatch target cache/rfD6RFrASE-1774FxdvuZA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so lik…[truncated]
2026-09-24 06:25:23Z memex-portal-deployment-76cf776847-5hflx crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [25890ef7#10 started 2026-09-24T06:25:23.0479320Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 45 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 17; oldest leg in flight 12 ms — stream-routed → cache/rfD6RFrASE-1774FxdvuZA (delivery dNARH7-7p0qHiurt1k0esQ). Latest dispatch target cache/rfD6RFrASE-1774FxdvuZA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so l…[truncated]
2026-09-24 06:27:01Z memex-portal-deployment-76cf776847-9p7z4 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [cf7a46bc#14 started 2026-09-24T06:27:01.1426613Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 46 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 24; oldest leg in flight 25 ms — stream-routed → cache/MkvakB3S60a4rdhuPh7WLA (delivery D9e3gmUKWU2wg8RUf_bgnA). Latest dispatch target cache/MkvakB3S60a4rdhuPh7WLA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so l…[truncated]
2026-09-24 06:27:01Z memex-portal-deployment-76cf776847-5hflx crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [25890ef7#12 started 2026-09-24T06:27:01.3896363Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 52 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 24; oldest leg in flight 21 ms — stream-routed → cache/MkvakB3S60a4rdhuPh7WLA (delivery tNMoa_Nay0WsS3kzO6Q0IQ). Latest dispatch target cache/MkvakB3S60a4rdhuPh7WLA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so l…[truncated]

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

Opened automatically from Admin/_LogIncident/fbd27b4e342e917c. Recurrences are folded into this issue rather than opening new ones.
It also stands for the whole log site 8b02af1dbffbfd6d: 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 commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 06:27:38Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx
    Recent log lines
    2026-09-24 06:27:01Z memex-portal-deployment-76cf776847-5hflx crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [25890ef7#12 started 2026-09-24T06:27:01.3896363Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 52 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 24; oldest leg in flight 21 ms — stream-routed → cache/MkvakB3S60a4rdhuPh7WLA (delivery tNMoa_Nay0WsS3kzO6Q0IQ). Latest dispatch target cache/MkvakB3S60a4rdhuPh7WLA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so l…[truncated]
    2026-09-24 06:27:37Z memex-portal-deployment-56fbdcd48f-sz5st crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [71617294#1 started 2026-09-24T06:27:37.5087724Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 4 over 3 stream destination(s), deepest per-channel queue 46, routing pool subscribing 0, waiting for a pool slot 1; oldest leg in flight 99344 ms — stream-routed → portal/reads-jll3sSZfx061jLrYC3JaUA (delivery ImVy9YungUGMp4SY8dcJVQ). Latest dispatch target portal/reads-jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE…[truncated]
    2026-09-24 06:27:38Z memex-portal-deployment-56fbdcd48f-sz5st crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [14d7b3e6#1 started 2026-09-24T06:27:38.6205791Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 62, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 100456 ms — stream-routed → portal/reads-jll3sSZfx061jLrYC3JaUA (delivery ImVy9YungUGMp4SY8dcJVQ). Latest dispatch target portal/reads-jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT TH…[truncated]
    

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

  3. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 981bb5aa56136a69
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Critical
    Detail [ROUTE] Routing back-pressure [{n}f1d1f4#{n} started {time}]: {n} route dispatches in flight (reporting threshold {n}); ordered channels queued {n} over {n} stream destination(s), deepest per-channel queue {n}, routing pool subscribing {n}, waiting for a pool slot {n}; oldest leg in flight {n} ms — dispatch → {path} (delivery ydjs4Kv8B0OLHsFCgnn9hg). Latest dispatch target {path} — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of {n} or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); {n} means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #{n} those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #{n}. '{value}' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read {n} there; '{value}' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream {path} 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N channels sharing the backlog it is ~{path} whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    Namespace memex
    Pods memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st
    Occurrences 2
    First seen 2026-09-24 06:25:51Z
    Last seen 2026-09-24 06:25:58Z
    Already folded here 1 fingerprint(s)
    Incident Admin/_LogIncident/981bb5aa56136a69
    Triage called it Routing back-pressure threshold crossed on RoutingGrain during the 2026-09-24 portal burst — likely duplicate of #5703
    What triage wrote about this fingerprint

    What is failing

    The Orleans RoutingGrain (MeshWeaver.Hosting.Orleans) crossed its 64-dispatch back-pressure threshold twice in a ~7 s window on the memex portal, on two different pods. Both lines show legs past their subscribe (subscribing 0/1, waiting for a pool slot 0), so the constraint is downstream, not a thread or pool shortage. This is the same log site, same 2026-09-24 ~06:25 burst, as already-filed issue #5703 (incident fbd27b4e342e917c) and part of a large family of sibling [ROUTE] incidents from that morning — likely a duplicate; a human may close it as such.

    Probable cause

    Moderate confidence (~50%): transient overload during a portal-wide routing burst on 2026-09-24 ~06:25Z. On the first pod (33f1d1f4#15, pod 7596dd76bb) the oldest leg is 2.9 s with deepest per-channel queue 29 over 6 queued legs — young legs, load the silo was absorbing. On the second pod (2fa0fbe4#3, pod 56fbdcd48f) the oldest leg (delivery Yur2gUnikEmhb_dyvdN5nA → Store/_GitSync) aged 12.8 s with depth 40 over 8 queued legs — head-of-line blocking within one channel per the #5009 channel model, but with only a single line from this activation we cannot tell a slow-but-alive leg from a leaked slot (a higher episode or clear line never appeared in this incident's evidence). Cause beyond "the burst at 06:25" is unclear; evidence points at downstream I/O on a GitSync/import-adjacent dispatch.

    Impact

    Minimal and transient: 2 occurrences on 2 pods over 7 s, no recurrences on this fingerprint since 2026-09-24 06:25 (two days ago). Routing was momentarily throttled while the threshold was crossed; nothing indicates a persistent leak.

    Where to look

    MeshWeaver.Hosting.Orleans.RoutingGrain — the dispatch path for Store/_GitSync and Hosting/Issue destinations, and the leg-termination/slot-release code. The RoutingGrain source was not found in the mesh, so no direct link. Start from issue #5703, which covers the same burst with richer evidence, and correlate the sibling _LogIncident nodes from 2026-09-24 before digging. Related prior work named by the log site itself: #5009 (per-channel split), #5018 (pool gauge semantics).

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

    • Last seen: 2026-09-24 06:25:58Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st
    Recent log lines
    2026-09-24 06:25:51Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [33f1d1f4#15 started 2026-09-24T06:25:51.3747404Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 6 over 2 stream destination(s), deepest per-channel queue 29, routing pool subscribing 1, waiting for a pool slot 0; oldest leg in flight 2883 ms — dispatch → Hosting/Issue (delivery ydjs4Kv8B0OLHsFCgnn9hg). Latest dispatch target Hosting/Publication — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it i…[truncated]
    2026-09-24 06:25:58Z memex-portal-deployment-56fbdcd48f-sz5st crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [2fa0fbe4#3 started 2026-09-24T06:25:58.2027927Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 8 over 2 stream destination(s), deepest per-channel queue 40, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 12815 ms — dispatch → Store/_GitSync (delivery Yur2gUnikEmhb_dyvdN5nA). Latest dispatch target portal/reads-jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-…[truncated]
    

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

  4. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 0beb991b4f0f4645
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Critical
    Detail [ROUTE] Routing back-pressure [b5{n}b9{n}#{n} started {time}]: {n} route dispatches in flight (reporting threshold {n}); ordered channels queued {n} over {n} stream destination(s), deepest per-channel queue {n}, routing pool subscribing {n}, waiting for a pool slot {n}; oldest leg in flight {n} ms — dispatch → {path} (delivery WCgdS0XeaUaWlXOMU5gxuA). Latest dispatch target {path} — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of {n} or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); {n} means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #{n} those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #{n}. '{value}' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read {n} there; '{value}' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream {path} 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N channels sharing the backlog it is ~{path} whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    Namespace memex
    Pods memex-portal-deployment-7596dd76bb-cbbj8
    Occurrences 2
    First seen 2026-09-24 06:31:18Z
    Last seen 2026-09-24 06:31:33Z
    Already folded here 2 fingerprint(s)
    Incident Admin/_LogIncident/0beb991b4f0f4645
    Triage called it Transient route-dispatch burst on memex portal briefly exceeded the RoutingGrain 64-dispatch back-pressure threshold
    What triage wrote about this fingerprint

    What is failing

    The Orleans RoutingGrain (MeshWeaver.Hosting.Orleans) crossed its 64-dispatch back-pressure threshold twice in 15 s on a single memex portal pod. Both lines are load, not a defect: the oldest leg in flight is 283 ms in the first crossing and 4 ms in the second — every leg young, i.e. dispatches the silo was absorbing. The first crossing shows 43 legs waiting for a pool slot with subscribing 0 (pre-subscribe pool wait, per the issue #5018 gauge semantics), all queued over one stream destination with a per-channel depth of 1 — a fan-out of independent legs, not head-of-line. The second shows a deepest per-channel queue of 43 (head-of-line within one channel per the issue #5009 channel model) but with a 4 ms oldest leg, so the backlog was draining as fast as it formed.

    Probable cause

    High confidence (~80%) this is a transient load spike — a burst of route dispatches (to a Crm/Opportunity public-access destination and an import/* activity) momentarily exceeded the routing pool's 64 slots; the second line is a NACK-labelled crossing with a different activation id (8256909e vs b560b916), and both episodes started fresh (#1). No leg aged past 300 ms, so there is no evidence of a leaked slot or stalled downstream I/O. Two lines 15 s apart on one pod two days ago, with no recurrence on this fingerprint since, support a one-off burst.

    Impact

    Minimal: 2 occurrences, 1 pod, 15 s window, self-limited. Routing was throttled only while the threshold was crossed; no user-visible failure is evidenced.

    Where to look

    MeshWeaver.Hosting.Orleans.RoutingGrain — the dispatch pool sizing and back-pressure threshold (64). If this site recurs frequently under normal traffic, the pool size or threshold may deserve tuning rather than a code fix. This is one of a family of same-site back-pressure incidents on 2026-09-24 (sibling fbd27b4e342e917c → issue #5703 covers a genuinely stalled Manufacturing import leg from the same burst; the present fingerprint is the benign load side of that same event). Prior referenced work: #5009 (per-channel split), #5018 (pool gauge semantics).

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

    • Last seen: 2026-09-24 06:31:33Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8
    Recent log lines
    2026-09-24 06:31:18Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [b560b916#1 started 2026-09-24T06:31:18.8267922Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 43 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 43; oldest leg in flight 283 ms — dispatch → Crm/Opportunity/_Access/Public_Access (delivery WCgdS0XeaUaWlXOMU5gxuA). Latest dispatch target cache/VudDQi4vzEedOOPv7mh5DA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, …[truncated]
    2026-09-24 06:31:33Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [8256909e#1 started 2026-09-24T06:31:33.8799808Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 43, routing pool subscribing 0, waiting for a pool slot 29; oldest leg in flight 4 ms — NACK. Latest dispatch target import/jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N c…[truncated]
    

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

  5. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 06:49:14Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8
    Recent log lines
    2026-09-24 06:31:18Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [b560b916#1 started 2026-09-24T06:31:18.8267922Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 43 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 43; oldest leg in flight 283 ms — dispatch → Crm/Opportunity/_Access/Public_Access (delivery WCgdS0XeaUaWlXOMU5gxuA). Latest dispatch target cache/VudDQi4vzEedOOPv7mh5DA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, …[truncated]
    2026-09-24 06:31:33Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [8256909e#1 started 2026-09-24T06:31:33.8799808Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 2 stream destination(s), deepest per-channel queue 43, routing pool subscribing 0, waiting for a pool slot 29; oldest leg in flight 4 ms — NACK. Latest dispatch target import/jll3sSZfx061jLrYC3JaUA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N c…[truncated]
    2026-09-24 06:49:14Z memex-portal-deployment-7596dd76bb-cbbj8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [9776e6d1#1 started 2026-09-24T06:49:14.4126892Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 3 over 3 stream destination(s), deepest per-channel queue 41, routing pool subscribing 1, waiting for a pool slot 4; oldest leg in flight 44 ms — NACK. Latest dispatch target import/rqEHlOPNSkCV1G34WXuQ9A — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N c…[truncated]
    

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

  6. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 08:27:15Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-6f9d6848f8-d9jwp
    Recent log lines
    2026-09-24 07:32:14Z memex-portal-deployment-6f9d6848f8-d9jwp crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ee6b821d#6 started 2026-09-24T07:32:13.9970567Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 34 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 34; oldest leg in flight 343 ms — dispatch → Systemorph/Event (delivery eCwlPBhk-US5B1yE1xcTWQ). Latest dispatch target cache/ArfmVDaDIUGtGPcI5LWlzQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight…[truncated]
    2026-09-24 07:32:15Z memex-portal-deployment-6f9d6848f8-d9jwp crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ee6b821d#7 started 2026-09-24T07:32:15.7441258Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 36 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 2; oldest leg in flight 543 ms — dispatch → Systemorph (delivery 87iHagIdg0KGVCmEwHfLGg). Latest dispatch target Approvals/Desk — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly a…[truncated]
    2026-09-24 07:32:15Z memex-portal-deployment-6f9d6848f8-d9jwp crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ee6b821d#8 started 2026-09-24T07:32:15.9087417Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 57 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 36; oldest leg in flight 708 ms — dispatch → Systemorph (delivery 87iHagIdg0KGVCmEwHfLGg). Latest dispatch target cache/ArfmVDaDIUGtGPcI5LWlzQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count…[truncated]
    

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

  7. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 08:20:47Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-75cd8dc74c-pckmh, memex-portal-deployment-6f9d6848f8-qskmn
    Recent log lines
    2026-09-24 07:25:59Z memex-portal-deployment-76cf776847-9p7z4 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [34f3e707#1 started 2026-09-24T07:25:59.4658110Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 2 over 1 stream destination(s), deepest per-channel queue 11, routing pool subscribing 0, waiting for a pool slot 46; oldest leg in flight 5241 ms — stream-routed → portal/01EJiUS4UNGPgVAfVfphgRRu6j3LdVy_M_JsuhSRdS8 (delivery 9kdoiZF-r0i-G3rGo9brYA). Latest dispatch target christoph.hofstetter/_Install/AppleMaps — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepes…[truncated]
    2026-09-24 07:37:46Z memex-portal-deployment-6f9d6848f8-qskmn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [758afb2c#2 started 2026-09-24T07:37:46.7038446Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 44 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 14; oldest leg in flight 10 ms — stream-routed → cache/tbf6siYc2Eu8HEib2NdLTA (delivery qxM1f1pHQ0uwSN1Dy8AkxA). Latest dispatch target cache/tbf6siYc2Eu8HEib2NdLTA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so li…[truncated]
    2026-09-24 07:51:38Z memex-portal-deployment-6f9d6848f8-qskmn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [758afb2c#6 started 2026-09-24T07:51:38.3360285Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 62 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 49; oldest leg in flight 33 ms — stream-routed → cache/tbf6siYc2Eu8HEib2NdLTA (delivery hS6XkevwBku0u3vgEG9pNA). Latest dispatch target cache/tbf6siYc2Eu8HEib2NdLTA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so li…[truncated]
    

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

  8. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 09:30:42Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-75cd8dc74c-pckmh, memex-portal-deployment-6f9d6848f8-qskmn, memex-portal-deployment-f8dd949d7-sggqz, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-959f6754d-x87fl
    Recent log lines
    2026-09-24 08:54:23Z memex-portal-deployment-f8dd949d7-b9kg8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [b0d1751e#3 started 2026-09-24T08:54:23.6707115Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 31 over 2 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 19; oldest leg in flight 833 ms — stream-routed → cache/GfcX-KD_V0CszuHVtkK7ZQ (delivery 1Pe0Bbo5F0CeTWe9zJAzxA). Latest dispatch target cache/P5FvI3N5pkOfR2TMzRmjaw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so l…[truncated]
    2026-09-24 08:54:24Z memex-portal-deployment-f8dd949d7-b9kg8 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [b0d1751e#4 started 2026-09-24T08:54:24.6472946Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 28 over 2 stream destination(s), deepest per-channel queue 2, routing pool subscribing 0, waiting for a pool slot 35; oldest leg in flight 976 ms — dispatch → LossModelling (delivery RC5pVSQK6Ea_SWPdfzbgxQ). Latest dispatch target Ifrs17/LineOfBusiness — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it …[truncated]
    2026-09-24 09:30:42Z memex-portal-deployment-56fbdcd48f-4dpcn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [8d0da506#2 started 2026-09-24T09:30:42.6900672Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 3 over 3 stream destination(s), deepest per-channel queue 3, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 17695 ms — stream-routed → cache/bCaJQ_o0BkCLQOndmSjN6A (delivery YuJQ9qafRUyMB2NvhAiVhw). Latest dispatch target Publish/Deck — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-fligh…[truncated]
    

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

  9. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 bab5b3e412f85ea5
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Critical
    Detail [ROUTE] Routing back-pressure [{n}f0{n}c#{n} started {time}]: {n} route dispatches in flight (reporting threshold {n}); ordered channels queued {n} over {n} stream destination(s), deepest per-channel queue {n}, routing pool subscribing {n}, waiting for a pool slot {n}; oldest leg in flight {n} ms — dispatch → Markdown (delivery X3X3nKN1NECc5C8{n}qhoeMw). Latest dispatch target rsalzmann — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of {n} or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); {n} means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #{n} those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #{n}. '{value}' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read {n} there; '{value}' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream {path} 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N channels sharing the backlog it is ~{path} whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    Namespace memex
    Pods memex-portal-deployment-56fbdcd48f-7cd4h
    Occurrences 1
    First seen 2026-09-24 13:42:32Z
    Last seen 2026-09-24 13:42:32Z
    Already folded here 3 fingerprint(s)
    Incident Admin/_LogIncident/bab5b3e412f85ea5
    Triage called it Incident filer does not mask RoutingGrain's per-episode stamp, minting a separate Critical incident per back-pressure crossing
    What triage wrote about this fingerprint

    What is failing. The log-watch incident filer's message normaliser does not mask the per-episode identity that MeshWeaver.Hosting.Orleans.RoutingGrain embeds in its Critical back-pressure line — the bracketed [activationId#episode started ISO-timestamp] group. Each threshold crossing therefore gets its own fingerprint and its own Critical incident node, instead of recurrences folding onto one incident with a growing occurrence count.

    Probable cause (high confidence, corroborated by measurement). The RoutingGrain line composes an 8-hex activation id, an episode counter and a tick-precision timestamp directly into the message text (call site: src/MeshWeaver.Hosting.Orleans/RoutingGrain.cs, method ReportSaturation, per the investigation in rbuergi/Feedback/route-backpressure-fingerprint-splits-20260921-2236). The normaliser has no pattern for that bracketed group. This is not hypothesis-only: core issue 5018's consolidation comments record seven separate GitHub issues (5017, 5019–5022, 5060, 5018) all carrying the same fingerprint 54ecfdaea23fd110 for the same incident window, and roughly 87 bot-filed tickets for this one log site between 2026-09-19 and 2026-09-21, of which 48 were hand-folded into core issue 5009 and 24 into 5018. The Admin incident partition currently holds 50+ distinct "Routing back-pressure" incident nodes for the same site — this ticket is one of them. Note the normaliser fix, not the log line, is the right lever: the episode stamp is load-bearing diagnosis (it tells a single line whether an episode drained or the grain was recycled).

    Impact. Observability noise, not a user-facing outage: a real slot-leak signal is buried among dozens of near-identical Criticals, and every crossing costs a triage round. The specific crossing behind this incident reads as absorbed load, not a leak: 64 dispatches in flight at threshold 64, 16 queued over 1 stream destination, deepest per-channel queue 2, both pool gauges at 0, oldest leg 1170 ms — all legs young, wait downstream I/O. One occurrence on one pod over the window.

    Where to look. The incident filer's message normaliser in MeshWeaver.Plugins — add a masking pattern for the [activation#episode started timestamp] group so recurrences fold onto one incident and the occurrence count becomes the signal. Related core issues: 5118 (the alert-flood verdict; the threshold-raise/demote band-aids were refused there), 5018 (load verdict, carries the seven-issues-one-fingerprint measurement), 5009 (head-of-line verdict, fixed in core PR 5151, awaiting production verification).

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

    • Last seen: 2026-09-24 13:42:32Z
    • Pods: memex-portal-deployment-56fbdcd48f-7cd4h
    Recent log lines
    2026-09-24 13:42:32Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [7f03153c#4 started 2026-09-24T13:42:32.9483289Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 16 over 1 stream destination(s), deepest per-channel queue 2, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 1170 ms — dispatch → Markdown (delivery X3X3nKN1NECc5C88qhoeMw). Latest dispatch target rsalzmann — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an arte…[truncated]
    

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

  10. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 15:32:44Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-75cd8dc74c-pckmh, memex-portal-deployment-6f9d6848f8-qskmn, memex-portal-deployment-f8dd949d7-sggqz, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-959f6754d-x87fl, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-589ff8f895-vn49b, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 15:20:25Z memex-portal-deployment-745745db7c-b2gjn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [83cf403b#19 started 2026-09-24T15:20:25.7448981Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 1 over 1 stream destination(s), deepest per-channel queue 6, routing pool subscribing 0, waiting for a pool slot 55; oldest leg in flight 56 ms — stream-routed → import/k5pyf8aibUmLMPut7lsCSg (delivery Pt2RlyhIYUqP_iq6VuRh-w). Latest dispatch target Store/Installer — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-fl…[truncated]
    2026-09-24 15:20:40Z memex-portal-deployment-745745db7c-b2gjn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [08cc765f#1 started 2026-09-24T15:20:40.9533618Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 8 over 3 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 53; oldest leg in flight 8 ms — stream-routed → cache/k5pyf8aibUmLMPut7lsCSg (delivery MYSdQkjnUkagePvyNtbvQw). Latest dispatch target cache/87nk8KpYqEqx1dsWS56Zlg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like…[truncated]
    2026-09-24 15:32:44Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [383c59e6#1 started 2026-09-24T15:32:44.6095099Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 18 over 3 stream destination(s), deepest per-channel queue 39, routing pool subscribing 0, waiting for a pool slot 6; oldest leg in flight 117 ms — stream-routed → portal/reads-87nk8KpYqEqx1dsWS56Zlg (delivery NN85ZqN9aUOrZq7OIgRgvw). Latest dispatch target cache/u2jWEy7A8EuCWIw6gU0Q2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSIN…[truncated]
    

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

  11. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 15:32:55Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-6f9d6848f8-d9jwp, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 15:23:48Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [860e6c0a#1 started 2026-09-24T15:23:48.2661814Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 33 over 2 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 1934 ms — dispatch → Ops/Watch/fleet-watch (delivery AJ5hvif7Bk-H69bDJCZBYg). Latest dispatch target UWDeepfield/YearLossTable — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flig…[truncated]
    2026-09-24 15:32:54Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [383c59e6#2 started 2026-09-24T15:32:54.7563910Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 21 over 4 stream destination(s), deepest per-channel queue 5, routing pool subscribing 0, waiting for a pool slot 34; oldest leg in flight 220 ms — dispatch → Ops/Issue/memex__ReplicaShortfall (delivery CAfhYralFU-FV8ySOZtUZA). Latest dispatch target UWDeepfield/YearLossTable — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like…[truncated]
    2026-09-24 15:32:55Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [6cd850fb#1 started 2026-09-24T15:32:55.0552016Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 23 over 3 stream destination(s), deepest per-channel queue 14, routing pool subscribing 1, waiting for a pool slot 27; oldest leg in flight 520 ms — dispatch → Ops/Issue/memex-cloud__ReplicaShortfall (delivery UhXBw8k3b0-mVpy8kJHe0Q). Latest dispatch target Doc/Architecture/ModuleOwnedSiblingsRide — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT…[truncated]
    

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

  12. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 16:29:37Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-75cd8dc74c-pckmh, memex-portal-deployment-6f9d6848f8-qskmn, memex-portal-deployment-f8dd949d7-sggqz, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-959f6754d-x87fl, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-589ff8f895-vn49b, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 16:29:36Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [1ff47b6e#4 started 2026-09-24T16:29:36.0040471Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 1 over 1 stream destination(s), deepest per-channel queue 63, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 37 ms — stream-routed → portal/reads-k5pyf8aibUmLMPut7lsCSg (delivery Wp2slAWwvEKu7YBqIVq3JQ). Latest dispatch target portal/reads-k5pyf8aibUmLMPut7lsCSg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CR…[truncated]
    2026-09-24 16:29:37Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [7948d1c2#7 started 2026-09-24T16:29:37.7983077Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 11 over 3 stream destination(s), deepest per-channel queue 53, routing pool subscribing 1, waiting for a pool slot 0; oldest leg in flight 23 ms — stream-routed → portal/reads-87nk8KpYqEqx1dsWS56Zlg (delivery Pe_6vRN-Hk60kMJq2aR9ZA). Latest dispatch target cache/u2jWEy7A8EuCWIw6gU0Q2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING…[truncated]
    2026-09-24 16:29:37Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [1ff47b6e#5 started 2026-09-24T16:29:37.8052363Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 1 over 1 stream destination(s), deepest per-channel queue 63, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 23 ms — stream-routed → portal/reads-k5pyf8aibUmLMPut7lsCSg (delivery 9e7VeTXydkKQ1TM96BiFxw). Latest dispatch target portal/reads-k5pyf8aibUmLMPut7lsCSg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CR…[truncated]
    

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

  13. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-24 16:06:12Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-6f9d6848f8-d9jwp, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 16:06:12Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [25b7e945#1 started 2026-09-24T16:06:12.0740219Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 13 over 3 stream destination(s), deepest per-channel queue 43, routing pool subscribing 0, waiting for a pool slot 10; oldest leg in flight 701 ms — dispatch → Ops/Issue/memex__ReplicaShortfall (delivery UbmeKqVJJ0mMRiFmnljIWQ). Latest dispatch target portal/reads-k5pyf8aibUmLMPut7lsCSg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSI…[truncated]
    2026-09-24 16:06:12Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [be2063e9#5 started 2026-09-24T16:06:12.0939841Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 16 over 3 stream destination(s), deepest per-channel queue 34, routing pool subscribing 0, waiting for a pool slot 1; oldest leg in flight 636 ms — dispatch → Ops/Issue/memex__RestartSpike (delivery WPC4d63cGUKenqE2etKJ1g). Latest dispatch target cache/87nk8KpYqEqx1dsWS56Zlg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like …[truncated]
    2026-09-24 16:06:12Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [f5790989#1 started 2026-09-24T16:06:12.9819252Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 5 over 3 stream destination(s), deepest per-channel queue 59, routing pool subscribing 0, waiting for a pool slot 4; oldest leg in flight 1524 ms — dispatch → Ops/Issue/memex__RestartSpike (delivery WPC4d63cGUKenqE2etKJ1g). Latest dispatch target cache/87nk8KpYqEqx1dsWS56Zlg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like …[truncated]
    

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

  14. systemorph commented on Sep 26, 2026

    @systemorph
    ContributorAuthor

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

    • Last seen: 2026-09-25 01:29:06Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5hflx, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-75cd8dc74c-pckmh, memex-portal-deployment-6f9d6848f8-qskmn, memex-portal-deployment-f8dd949d7-sggqz, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-959f6754d-x87fl, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-589ff8f895-vn49b, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 16:29:37Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [7948d1c2#7 started 2026-09-24T16:29:37.7983077Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 11 over 3 stream destination(s), deepest per-channel queue 53, routing pool subscribing 1, waiting for a pool slot 0; oldest leg in flight 23 ms — stream-routed → portal/reads-87nk8KpYqEqx1dsWS56Zlg (delivery Pe_6vRN-Hk60kMJq2aR9ZA). Latest dispatch target cache/u2jWEy7A8EuCWIw6gU0Q2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING…[truncated]
    2026-09-24 16:29:37Z memex-portal-deployment-56fbdcd48f-7cd4h crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [1ff47b6e#5 started 2026-09-24T16:29:37.8052363Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 1 over 1 stream destination(s), deepest per-channel queue 63, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 23 ms — stream-routed → portal/reads-k5pyf8aibUmLMPut7lsCSg (delivery 9e7VeTXydkKQ1TM96BiFxw). Latest dispatch target portal/reads-k5pyf8aibUmLMPut7lsCSg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CR…[truncated]
    2026-09-25 01:29:06Z memex-portal-deployment-589ff8f895-ghgjt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [945e6f84#4 started 2026-09-25T01:29:06.5340886Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 3 over 3 stream destination(s), deepest per-channel queue 31, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 7 ms — stream-routed → portal/reads-rjvXt8RcjU6oflKvUXazgA (delivery kW-JgZPT00O2pmUHuE4oCQ). Latest dispatch target portal/reads-rjvXt8RcjU6oflKvUXazgA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CRO…[truncated]
    

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

  15. 81 remaining items

  16. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 5172aa25805c49fd
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for fo2zye6hv5kjayw8{n}g6qcq to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:26:04Z
    Last seen 2026-10-08 06:26:04Z
    Already folded here 53 fingerprint(s)
    Incident Admin/_LogIncident/5172aa25805c49fd
    Triage called it Instance registration settings page requests Admin/Settings/Registration, a node that does not exist on the portal
    What triage wrote about this fingerprint

    What is failing

    Portal clients on memex-cloud are sending requests addressed to the node Admin/Settings/Registration — the Settings ▸ Instance registration page introduced with the 2026-08-30 consent-gate feature. The server-side lookup fails (No node found at 'Admin/Settings/Registration'. Closest ancestor is 'Admin'), and the resulting NotFound NACK cannot be delivered back to the sender either (its pod-hub/stream has no live subscriber), so each sender hangs until its request budget expires instead of failing fast.

    Probable cause

    Medium confidence: the client surfaces and addresses a settings node that is not provisioned on this deployment. Every sample in this burst — and in the sibling incidents from the same minute (Admin/_LogIncident/bc4355c0689e6aa5, 1f54d036176b8a51, aad942a75a0e3dcd, bcdff7ccae5e5daa, 38b033584af2ee9d, all pod memex-portal-deployment-6b756548d4-dzn5q) — names the identical missing target, and a mesh search confirms no Admin/Settings/Registration node exists. Either the registration panel's node is not created/installed on memex-cloud (packaging/provisioning bug), or the Settings menu offers the entry in a deployment where it does not apply. The RoutingGrain's own handling is consistent with its design; the defect is the missing node, plus the client-side cost of waiting out the request budget on an undeliverable NACK.

    Impact

    User-visible failure of the Instance registration settings page for portal users: each request fails (or appears to hang until timeout). The feature this page gates — an admin accepting privacy/terms before the installation registers — cannot be completed on this portal. Observed as a short burst (~6 distinct sender sessions within a minute) on a single pod, not a fleet-wide outage.

    Where to look

    • The client view/menu that opens Settings ▸ Instance registration and issues requests to Admin/Settings/Registration.
    • The server-side provisioning of that node (instance-registration / plugin-catalog module) and why it is absent on memex-cloud.
    • Feature context: An installation asks before it registers.

    Observability note: this log site's message embeds the per-request id, so every burst at it mints a new fingerprint/incident — the same class of problem reported in Feedback/_Submissions/fb-986b28181a7b692c2358e81f31236aa3 ("RoutingGrain back-pressure incidents split per episode stamp"). Consider masking the request id in the [ROUTE] undeliverable-NACK message so these fold into one incident.

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

    • Last seen: 2026-10-08 06:26:04Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:26:04Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for fo2zye6hv5kjayw88g6qcq to sender node/4vq3jlxpgpoylwe7wqb4fd: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'Admin/Settings/Registration'. Closest ancestor is 'Admin' (remainder='Settings/Registration').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  17. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 bc4355c0689e6aa5
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for znbyal0mveouqk8hipy6{n} to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:26:12Z
    Last seen 2026-10-08 06:26:12Z
    Already folded here 54 fingerprint(s)
    Incident Admin/_LogIncident/bc4355c0689e6aa5
    Triage called it RoutingGrain cannot return NACK to a sender with no live activation, leaving the request to time out instead of failing fast
    What triage wrote about this fingerprint

    What is failing

    A request in the memex-cloud deployment targeted Admin/Settings/Registration, a node that does not exist (closest ancestor is Admin). The mesh correctly resolved a NotFound delivery failure for it — but the RoutingGrain could not deliver that failure back to the sender (node/ds1elf9s6xspwllxgiqu8, portal pod memex-portal-deployment-6b756548d4-dzn5q): no pod-hub activation claims that address, its stream has no live subscriber, and a NACK has no NACK of its own. The system's documented fallback is to let the sender wait out its full request budget instead of failing fast.

    Probable cause

    Two stacked problems, with different confidence:

    1. Trigger (high confidence): something in the portal requested a nonexistent node address — Admin/Settings/Registration does not exist in the mesh. This is the concrete event that minted the NotFound failure.
    2. Defect (medium confidence): the RoutingGrain's NACK delivery path has no last-resort channel when the sender's activation is gone/deactivated and its stream has no subscriber. Rather than resolving the sender's request (e.g. via a timeout-aware reply, or registering the failure so the sender's next contact surfaces it), it logs and abandons — converting an immediately-answerable "not found" into a full request-budget timeout for the client.

    Impact

    Single occurrence, single pod, first seen at 2026-10-08 06:26 UTC. For the affected user this means a hung request that consumes the entire request budget instead of a fast 404-style answer. Low volume so far, but any pod restart / hub deactivation while a client request is in flight can hit the same dead-end, so the impact is user-visible hangs under a plausible race, not data corruption.

    Where to look

    • MeshWeaver.Hosting.Orleans.RoutingGrain — the NACK/delivery-failure routing path, specifically the branch logged with [ROUTE] Cannot deliver ... DeliveryFailure ... no pod-hub activation claims that address AND its stream has no live subscriber (the framework source for this component is not in the readable mesh; start from the log category MeshWeaver.Hosting.Orleans.RoutingGrain).
    • The portal sender code that issued the request to Admin/Settings/Registration — verify whether that address is a stale/erroneous link, or a node that failed to activate.

    Related, not duplicates

    • Feedback/_Submissions/fb-986b28181a7b692c2358e81f31236aa3 / rbuergi/Feedback/route-backpressure-fingerprint-splits-20260921-2236 — about RoutingGrain ticket fingerprint splitting, a different symptom at the same component.
    • Numerous MeshWeaver.Messaging.DeliveryFailureException: No node found at '...' entries under Ops/Logs since 2026-09-11 across pods — those are the deliverable failures; this incident is specifically the delivery of the failure itself failing.

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

    • Last seen: 2026-10-08 06:26:12Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:26:12Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for znbyal0mveouqk8hipy65 to sender node/ds1elf9s6xspwllxgiqu8: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'Admin/Settings/Registration'. Closest ancestor is 'Admin' (remainder='Settings/Registration').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  18. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 1f54d036176b8a51
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for g3{n}lnlhzr4vs3ms6 to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:26:12Z
    Last seen 2026-10-08 06:26:12Z
    Already folded here 55 fingerprint(s)
    Incident Admin/_LogIncident/1f54d036176b8a51
    Triage called it Client addresses non-existent node rbuergi/Instance; undeliverable NotFound NACK leaves the sender hanging until its request budget expires
    What triage wrote about this fingerprint

    What is failing

    A portal client session on memex-cloud issued a request addressed to rbuergi/Instance — a node that does not exist in the mesh (closest ancestor rbuergi, the user's space; remainder Instance). The server correctly produced a NotFound delivery failure, but the RoutingGrain could not deliver the NACK back to the sender (no pod-hub activation claims the sender's address, its stream has no live subscriber, and a NACK has no NACK of its own), so the sender waits out its full request budget instead of failing fast.

    Probable cause

    Low-to-medium confidence. Something constructed an Instance path relative to the user's space that was never created — the user's pinned paths include Instances (plural) and the workspace contains an instance skill doc (rbuergi/Skill/instance), so this may be a stale bookmark/pinned-path resolution or an agent mis-resolving a reference to a per-user Instance node. The RoutingGrain's own logging is consistent with its design; the defect is the bad client-side address, compounded by the undeliverable-NACK hang.

    Impact

    Minimal by the numbers: 1 occurrence, 1 pod (memex-portal-deployment-6b756548d4-dzn5q), a single sender session within one burst. Likely one failed or hung client interaction. Not an outage.

    Where to look

    • The client surface that produced the address rbuergi/Instance (sender session id is in the evidence below) — check pinned-path/bookmark resolution and any per-user Instance node convention.
    • The RoutingGrain's undeliverable-NACK path: a sender that can never receive its NACK burns its whole request budget.

    Related

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

    • Last seen: 2026-10-08 06:26:12Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:26:12Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for g3379121lnlhzr4vs3ms6 to sender node/kjsw4qcq1mn8oybsj0lp: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'rbuergi/Instance'. Closest ancestor is 'rbuergi' (remainder='Instance').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  19. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 38b033584af2ee9d
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for i3g6{n}r3{n}oo5ao8{n}c3mknu to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:25:48Z
    Last seen 2026-10-08 06:25:48Z
    Already folded here 57 fingerprint(s)
    Incident Admin/_LogIncident/38b033584af2ee9d
    What triage wrote about this fingerprint

    What is failing

    When the Orleans routing grain answers a cross-pod request with a NotFound DeliveryFailure, it sometimes cannot deliver that NACK at all: no pod-hub activation claims the sender's address and the sender's stream has no live subscriber. The NACK is dropped, and the distant sender waits out its entire request budget for an answer the router had already computed — here a NotFound for rbuergi/Instance, a node that does not exist in the rbuergi partition.

    Probable cause (medium confidence)

    This is the documented cross-process residue of the refused-reply seams: Refused replies during teardown built in-process carriers for an undeliverable NACK (IUndeliverableReplySink, MessageHub.TryDeliverNackInProcess, the intake-gate rule) and then explicitly declares the gap this incident lands in — "a reply that crossed a process boundary" is not covered, because the waiter lives in another process where no in-process registry can see it. A cross-pod NACK therefore has no carrier of last resort. Why this particular sender was unreachable is not decidable from one occurrence: either its hub disposed between request and NACK (a benign teardown race, the cross-process analogue of the #3303/#4072 family) or its pod-hub claim was lost on a membership re-partition (The Pod-Hub Claim Must Be Re-Asserted — a claim asserted once into a re-partitioned directory is lost silently). The claim-reassertion fix should make the second impossible, so a recurrence of this fingerprint discriminates between the two.

    Impact

    Single occurrence on a single pod: one caller burned one request budget for an already-computed verdict, then recovered by timeout. Systemically, any cross-pod request whose NACK is minted after its sender's pod-hub is gone pays the same full-budget wait — and the same log site fired for several distinct senders within the same minute (sibling incidents Admin/_LogIncident/5172aa25805c49fd and Admin/_LogIncident/bcdff7ccae5e5daa, both NotFound for Admin/Settings/Registration, a path that also does not exist), so the site is not a one-off. Secondary-path latency degradation, not data loss — sev:M, re-rule if the fingerprint recurs or a caller is shown to hang past its budget.

    Where to look

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

    • Last seen: 2026-10-08 06:25:48Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:25:48Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for i3g66r367oo5ao80c3mknu to sender node/r9drrq0yxwe9tlfr4xgep: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'rbuergi/Instance'. Closest ancestor is 'rbuergi' (remainder='Instance').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  20. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 38b033584af2ee9d
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for i3g6{n}r3{n}oo5ao8{n}c3mknu to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:25:48Z
    Last seen 2026-10-08 06:25:48Z
    Already folded here 56 fingerprint(s)
    Incident Admin/_LogIncident/38b033584af2ee9d
    What triage wrote about this fingerprint

    What is failing

    When the Orleans routing grain answers a cross-pod request with a NotFound DeliveryFailure, it sometimes cannot deliver that NACK at all: no pod-hub activation claims the sender's address and the sender's stream has no live subscriber. The NACK is dropped, and the distant sender waits out its entire request budget for an answer the router had already computed — here a NotFound for rbuergi/Instance, a node that does not exist in the rbuergi partition.

    Probable cause (medium confidence)

    This is the documented cross-process residue of the refused-reply seams: Refused replies during teardown built in-process carriers for an undeliverable NACK (IUndeliverableReplySink, MessageHub.TryDeliverNackInProcess, the intake-gate rule) and then explicitly declares the gap this incident lands in — "a reply that crossed a process boundary" is not covered, because the waiter lives in another process where no in-process registry can see it. A cross-pod NACK therefore has no carrier of last resort. Why this particular sender was unreachable is not decidable from one occurrence: either its hub disposed between request and NACK (a benign teardown race, the cross-process analogue of the #3303/#4072 family) or its pod-hub claim was lost on a membership re-partition (The Pod-Hub Claim Must Be Re-Asserted — a claim asserted once into a re-partitioned directory is lost silently). The claim-reassertion fix should make the second impossible, so a recurrence of this fingerprint discriminates between the two.

    Impact

    Single occurrence on a single pod: one caller burned one request budget for an already-computed verdict, then recovered by timeout. Systemically, any cross-pod request whose NACK is minted after its sender's pod-hub is gone pays the same full-budget wait — and the same log site fired for several distinct senders within the same minute (sibling incidents Admin/_LogIncident/5172aa25805c49fd and Admin/_LogIncident/bcdff7ccae5e5daa, both NotFound for Admin/Settings/Registration, a path that also does not exist), so the site is not a one-off. Secondary-path latency degradation, not data loss — sev:M, re-rule if the fingerprint recurs or a caller is shown to hang past its budget.

    Where to look

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

    • Last seen: 2026-10-08 06:25:48Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:25:48Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for i3g66r367oo5ao80c3mknu to sender node/r9drrq0yxwe9tlfr4xgep: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'rbuergi/Instance'. Closest ancestor is 'rbuergi' (remainder='Instance').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  21. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 aad942a75a0e3dcd
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for sbi1k8aqw8cdg1j1v8dbk to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:25:58Z
    Last seen 2026-10-08 06:25:58Z
    Already folded here 57 fingerprint(s)
    Incident Admin/_LogIncident/aad942a75a0e3dcd
    Triage called it Undeliverable NotFound NACK strands an ownerless node-hub sender for its full request budget — recurrence of the #5703 wedge class
    What triage wrote about this fingerprint

    What is failing. The router correctly resolved a request to Admin/Settings/Registration as a missing node (closest ancestor Admin, remainder Settings/Registration) and produced a NotFound DeliveryFailure — but its NACK leg then hit the terminal undeliverable state: no pod-hub activation claims the sender's address (node/ck8ac38ogmuwnjmw7xsaf) and the sender's stream has no live subscriber. The sender therefore never learned its target was missing and will wait out its entire request budget in silence — the documented "silence is a wedge" symptom (Error Propagation & Wedges) recurring on the pod-hub transport.

    Probable cause (medium confidence — mechanism clear, trigger not). Two distinct questions, and only one is answerable from this sample:

    1. Why the sender was ownerless at that moment — whether the hub backing node/ck8ac38ogmuwnjmw7xsaf was genuinely gone (environment), or alive with its registration momentarily absent (defect) — cannot be established from one occurrence. Note that a node/-prefixed hub address is exactly the shape a hosted client-process hub takes, and per Pod-Hub Delivery — the Transport Swap such hubs never attach a pod-hub grain, so the directed NACK leg can only ever reach them via the stream — which had no live subscriber here.
    2. Structural defect regardless of the trigger: the LogUndeliverableNack terminal arm is a full stop — no bounded re-probe, no way to tell the waiting sender its verdict is gone, nothing to bound the wedge. This is the same design gap already ticketed as Slow dispatch leg to Manufacturing import activity holds a routing slot and backs up same-stream legs past the 64-dispatch threshold #5703 for a Failed-verdict NACK to a client-process sender.

    A secondary, separate question worth a look: why the original request targeted Admin/Settings/Registration at all — that path does not exist in the mesh (nothing under Admin/Settings resolves), so a caller — likely a portal UI view or a stale client reference — is asking for a node that isn't there. That caller got no answer either.

    Impact. One occurrence, one pod (memex-cloud, 2026-10-08). The immediate cost is one sender waiting out its full budget instead of receiving an immediate NotFound. The class-level cost is larger: any request whose failure NACK cannot be delivered wedges the sender for its full budget with nothing logged above Debug on its side. Judged sev:M — a clear defect with an easy workaround (the sender's own budget eventually expires; the underlying request was already unanswerable), on a secondary path.

    Likely duplicate — reference before investigating. This is the same log site (site fold 8b02af1dbffbfd6d) and the same terminal LogUndeliverableNack arm as Systemorph/MeshWeaver#5703 (filed 2026-10-05 from incident Admin/_LogIncident/c960356bbdd8b7b9). This instance differs only in the original verdict (NotFound for a missing node vs Failed for a pod-hub delivery timeout) and the sender shape (node/… hub vs a PR-triage thread path) — plausibly the same root defect, and a human can likely fold this into #5703 in seconds.

    Where to look. MeshWeaver.Hosting.Orleans.RoutingGrain — the PostFailure / LogUndeliverableNack terminal arm in src/MeshWeaver.Hosting.Orleans/RoutingGrain.cs (path as named in #5703; I could not read the source in the mesh): what, if anything, bounds the sender's wait after the NACK is declared undeliverable. Then the registration side: when does a hosted node/… client-process hub's stream subscription lapse relative to a pending request's lifetime (Pod-Hub Delivery — the Transport Swap documents the client-process residual). For the missing target: find the caller that constructs a request to Admin/Settings/Registration and correct or remove it.

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

    • Last seen: 2026-10-08 06:25:58Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:25:58Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for sbi1k8aqw8cdg1j1v8dbk to sender node/ck8ac38ogmuwnjmw7xsaf: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'Admin/Settings/Registration'. Closest ancestor is 'Admin' (remainder='Settings/Registration').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  22. systemorph commented on Oct 8, 2026

    @systemorph
    ContributorAuthor

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

    This issue tracks the log site 8b02af1dbffbfd6d (MeshWeaver.Hosting.Orleans.RoutingGrain), 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 bcdff7ccae5e5daa
    Log site 8b02af1dbffbfd6d
    Category MeshWeaver.Hosting.Orleans.RoutingGrain
    Severity Error
    Detail [ROUTE] Cannot deliver the NotFound DeliveryFailure for f2{n}mid7{n}vz5hel6{n}jh4d0t to sender {path}: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No {id} found at '{value}'. Closest ancestor is '{value}' (remainder='{value}').. {n} earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    Namespace memex-cloud
    Pods memex-portal-deployment-6b756548d4-dzn5q
    Occurrences 1
    First seen 2026-10-08 06:26:00Z
    Last seen 2026-10-08 06:26:00Z
    Already folded here 58 fingerprint(s)
    Incident Admin/_LogIncident/bcdff7ccae5e5daa
    Triage called it RoutingGrain dead-ends NotFound NACKs for senders without a live pod-hub; the triggering requests target a nonexistent Admin/Settings/Registration node
    What triage wrote about this fingerprint

    What is failing

    Two things are visible at one log site in the memex-cloud portal:

    1. Something on the portal addresses messages to Admin/Settings/Registration — a node that does not exist in this mesh (closest ancestor is Admin). The router correctly answers these with NotFound DeliveryFailures (NACKs).
    2. By the time the NACKs are delivered back, the requesting sender has no pod-hub activation claiming its address and no live stream subscriber. A NACK cannot itself be NACKed, so RoutingGrain logs the undeliverable failure at fail level and drops it — the sender, if it still existed, would wait out its full request budget.

    Probable cause — medium confidence on both halves:

    • The requests most plausibly come from a view or feature that still constructs the path Admin/Settings/Registration after the installation/registration flow changed (see the "An installation asks before it registers" change note). Three different sender node ids issued these requests within seconds of each other, which looks like a page load or view initialization rather than one stray call.
    • The undeliverable NACK is a design gap in RoutingGrain's reply leg for senders that are gone by reply time. The senders here had already lost their pod-hub, so the drop itself is likely benign — there is no waiter left to hang — but the condition is logged at Critical for what may be an expected disconnect race.

    Impact

    Judged from the numbers: a one-off small burst, a single portal pod, and the first occurrence of this fingerprint. No outage, and no live request demonstrably hung. A sibling incident at the same log site in the same window shows the same shape for a different missing path (rbuergi/Instance, see Admin/_LogIncident/38b033584af2ee9d), so the NACK dead-end generalizes, but neither burst looks like live-traffic loss.

    Where to look

    • The NACK-delivery leg: RoutingGrain in the MeshWeaver.Hosting.Orleans sources (log category MeshWeaver.Hosting.Orleans.RoutingGrain, message "Cannot deliver the NotFound DeliveryFailure"). Routing placement and pod-hub reachability context: The Routing Entry Point.
    • What constructs the address Admin/Settings/Registration: the Admin/Settings views and the installation-registration flow (change note). A client-side reference to a node that no longer exists is the actually-fixable defect here.

    Already known?

    • No existing issue was found for this exact log site, so this is not a duplicate as far as the triage registry shows.
    • Related but distinct: core issue RoutingGrain turns a stale pod-hub route into a sender-visible DeliveryFailure instead of re-resolving it #2299 — RoutingGrain turning transient pod-hub conditions into terminal DeliveryFailures (same component, different failure mode).
    • Alerting-hygiene note: this one condition minted four separate sibling incidents because the delivery id embedded in the message keeps its letters through the normaliser's {n} digit masking, so the same log site split instead of folding. Same mechanism class as the RoutingGrain back-pressure line documented in Feedback/_Submissions/fb-986b28181a7b692c2358e81f31236aa3 — a masking case for this line likely belongs alongside it.

    Severity: sev:L — a rare edge case (first occurrence), with no demonstrated live-traffic loss; the request budget bounds any hang.

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

    • Last seen: 2026-10-08 06:26:00Z
    • Pods: memex-portal-deployment-6b756548d4-dzn5q
    Recent log lines
    2026-10-08 06:26:00Z memex-portal-deployment-6b756548d4-dzn5q fail: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Cannot deliver the NotFound DeliveryFailure for f24mid70vz5hel69jh4d0t to sender node/c1ysektdbmpb7uqa75arzi: no pod-hub activation claims that address AND its stream has no live subscriber, and a NACK has no NACK of its own. The sender will wait out its own request budget — the original failure was: No node found at 'Admin/Settings/Registration'. Closest ancestor is 'Admin' (remainder='Settings/Registration').. 0 earlier undeliverable NACK(s) to this sender since the last such line were logged at Debug.
    
  23. added a commit that references this issue on Oct 8, 2026
  24. rbuergi commented on Oct 8, 2026

    @rbuergi
    Contributor

    Fix for the verdict half: #6324, open.

    Defect. The newest shape here (fingerprint 2ca53b1d1670888b, 2026-10-05 20:00Z) reported the oldest leg at 124 863 ms and 138 280 ms, with the deepest queue at 61–62 on the single channel cache/L1PlUIhTo0WIzSJqWuyx1Q [HOTBn-NpckOVgw-t3NcqWg], and logged it at Critical. That Critical misread its own measurement.

    • The leg's clock started at ENQUEUE. RoutingGrain.RouteMessage, stream branch, called quiescence?.Track(...) before orderedDispatcher.Enqueue.
    • LegSelfBound bounds a leg after it gets its turn.
    • So a frame waiting behind about 60 frames of its own stream carried the queue's whole run as its age. At roughly two seconds per frame that comes to about 120 s, which was read as "a leaked slot or a starved silo".

    What #6324 changes.

    • RoutingQuiescence.TrackQueued and OrderedRouteDispatcher's onLegStarted callback now stamp a leg's dispatch: the moment its channel hands it to the routing pool.
    • The level is decided by the oldest DISPATCHED leg. A wait for a pool thread still counts, so a starved silo still reads Critical.
    • The queue wait is printed as its own figure and never decides the level.
    • A stuck head leg is still the oldest dispatched leg and still Critical.
    • Negative control: with the age measured from acceptance again, AQueuedLegIsNotALeakTest fails (201.9 ms vs 0.56 ms since dispatch).

    What it does NOT fix, so this stays open.

    1. Why one stream (HOTBn-…) produced 60+ frames faster than one cross-silo IPodHubGrain.Deliver per frame could drain them. That producer is still unidentified.
    2. Whether the 10-05 head leg was alive or stuck.
    3. This issue has also become a bucket. About 58 unrelated Cannot deliver the NotFound DeliveryFailure fingerprints from RoutingGrain, through 2026-10-08 06:26Z on memex-cloud, folded in because they share the site key (category + EventId 0 + exception type). Those need their own EventIds before this issue's count means anything. fix(#1549): every NodeType release-failure class logs under its own EventId #6326 applies the same remedy to the NodeType release site (Per-node hubs stopped answering on memex-cloud for 2h20m — the NodeType release burst is the symptom that surfaced it #1549).
  25. added a commit that references this issue on Oct 8, 2026
  26. rbuergi commented on Oct 9, 2026

    @rbuergi
    Contributor

    #6324 is live on memex, and today's back-pressure has a named producer.

    Still open, as before: the producer of the 10-05 HOTBn-… single-stream backlog, and the ~58 folded Cannot deliver the NotFound DeliveryFailure fingerprints that share this site key.

  27. rbuergi commented on Oct 11, 2026

    @rbuergi
    Contributor

    Closing: the back-pressure this issue tracks has not been recorded at Critical since 2026-10-06 02:00Z. Two things it collected along the way are named below so they are not lost.

    The title's defect — one slow leg holding a slot while same-stream legs back up past the threshold — was a single 43-second burst on 2026-09-24. What followed under this issue:

    change what it removed live since
    #5657 Critical decided by queue depth at the crossing (a producer burst read as a stuck stream) not re-read here
    #6324 a queued leg's wait counted as its age, so a 60-frame backlog read as a 120 s "leak" 2026-10-09 on memex (c573a41138)
    #6357 the recursive-delete fan-out posting every leaf at once — the named producer of the 2026-10-09 episodes merged 2026-10-09

    Reading — the incident record (namespace:Admin/_LogIncident name:*RoutingGrain* sort:lastModified-desc, memex.systemorph.com, 2026-10-11 ~11:20Z; the folder is live, other incidents were written at 11:03Z today): the newest Routing back-pressure incident is 5f6421c4b3852c28, last modified 2026-10-06T02:00:56Z. Nothing since, over five days.

    Not established, and not blocking the close:

    Two things that folded in here and are NOT this defect:

    1. Cannot deliver the NotFound DeliveryFailure … to sender node/… — about 58 fingerprints, last on 2026-10-08 06:32Z on memex-cloud. The target was Admin/Settings/Registration. That path is not stale: it is the Hosting.Instance module's own settings node (MeshWeaver.Plugins src/MeshWeaver.Hosting.Instance/InstanceApp.cs). So the burst reads as point reads of a node that did not exist yet on that instance, from a view whose client hub was gone by the time the NotFound came back. A caller-side question for that module, not a routing one.
    2. Directed delivery to pod hub … failed — surfacing Failed DeliveryFailure with a TimeoutException (254804a0aad8b746, last modified 2026-10-11T04:14Z). This one IS still occurring; the watcher last wrote it in the same pass as the incident-write stalls on Incident comment write stalls 30s then aborts when the incident hub cannot hydrate from persistence #4962 (both nodes at 04:14:53Z). It is tracked there.

    Fleet issue wave, Claude Opus 5.5 (agent session).

  28. rbuergi commented on Oct 11, 2026

    @rbuergi
    Contributor

    (re-posted 2026-10-11; originally by systemorph-com[bot] on 2026-09-26)

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

    • Last seen: 2026-09-24 15:04:43Z
    • Pods: memex-portal-deployment-7596dd76bb-cbbj8, memex-portal-deployment-56fbdcd48f-sz5st, memex-portal-deployment-76cf776847-2x9rq, memex-portal-deployment-76cf776847-9p7z4, memex-portal-deployment-76cf776847-5x2kg, memex-portal-deployment-56fbdcd48f-4dpcn, memex-portal-deployment-8498855cbf-vchtf, memex-portal-deployment-6f9d6848f8-d9jwp, memex-portal-deployment-f8dd949d7-b9kg8, memex-portal-deployment-589ff8f895-ghgjt, memex-portal-deployment-745745db7c-b2gjn, memex-portal-deployment-56fbdcd48f-7cd4h, memex-portal-deployment-56fbdcd48f-cbms9
    Recent log lines
    2026-09-24 13:40:15Z memex-portal-deployment-56fbdcd48f-cbms9 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [625e2125#2 started 2026-09-24T13:40:15.7417696Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 8 over 3 stream destination(s), deepest per-channel queue 40, routing pool subscribing 0, waiting for a pool slot 2; oldest leg in flight 2304 ms — dispatch → Deployments/client-b (delivery 9Wysa5feC0Khs8P89EAaow). Latest dispatch target portal/reads-6DDF3wtlc0iHp8boGH6Xqw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deepest is sampled AT THE CROSSING, so like the i…[truncated]
    2026-09-24 13:42:45Z memex-portal-deployment-745745db7c-b2gjn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [eee130f9#1 started 2026-09-24T13:42:45.2539128Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 60 over 1 stream destination(s), deepest per-channel queue 1, routing pool subscribing 0, waiting for a pool slot 0; oldest leg in flight 1978 ms — dispatch → DeepSign/SignatureRequest/_Activity/compile-2026092413423121990f88abf1ac94574be0da301950dca38 (delivery CWL6bfQvNEioWNPsvbEIyQ). Latest dispatch target LinkedIn/Post — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything…[truncated]
    2026-09-24 15:04:43Z memex-portal-deployment-745745db7c-b2gjn crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [617b41aa#3 started 2026-09-24T15:04:43.2945954Z]: 64 route dispatches in flight (reporting threshold 64); ordered channels queued 3 over 3 stream destination(s), deepest per-channel queue 39, routing pool subscribing 0, waiting for a pool slot 3; oldest leg in flight 21 ms — dispatch → Signature/_Activity/import-339d966cd286c273-20260924150442286-e0ab1b2a (delivery zCFXYOFLfUCJfQBeOKu67w). Latest dispatch target import/va_KMyV6okqfPo86k7ZdDg — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A CHANNEL is (destination, stream), so a deepest queue of 1 or more means legs of the SAME stream are blocked behind one another (head-of-line within one channel); 0 means nothing is waiting on anything, so read it as load. Many channels over FEW destinations is a multiplexer hub draining in parallel, which is load too — before issue #5009 those legs shared one channel and read as head-of-line. 🚨 THE TWO POOL GAUGES ANSWER DIFFERENT QUESTIONS AND ONLY ONE SEES THE WAIT NAMED ABOVE — issue #5018. 'subscribing' counts legs inside their SUBSCRIBE PROLOGUE only, so a leg still waiting for a ThreadPool thread and a leg already past its subscribe BOTH read 0 there; 'waiting for a pool slot' is the gauge that sees the pre-subscribe wait. High while subscribing is below the pool's cap is a THREAD shortage; both near zero means the legs are past their subscribe and the wait is downstream I/O. 🚨 READ THE OLDEST LEG FIRST: it is the only load-vs-leak discriminator available from a SINGLE line — every leg young is load the silo is absorbing, one leg minutes old is a slot that never came back and the label names it — whereas the episode stamp below needs a SECOND line to say anything. 🚨 Deep…[truncated]
    

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

  29. deleted a comment from systemorph on Oct 11, 2026
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