docs(#5212): #890 on main — one onset position, a per-process harness null, and the JIT-listing capture - #5663
Conversation
… null, and the JIT-listing capture Two occurrences on Plugins main today (leg network-133 4/8, PluginCatalog.Test), same onset test, ~2 of 33 executions. A population harness (>=600 processes) does not reach the state. Records why the evidence now points at the tier-1 code of the guard's call path (a hypothesis, stated as one) and how to read the JIT listing Plugins#2357 now captures on every failing suite. Refs #5212 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Address the documented clarification issues before approval.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 4
Open (4)
What changed in this PR
This documentation-only PR adds a #890 investigation section covering recurring CI failures, process-level evidence, the current hypothesis, and JIT capture guidance.
Changes:
- Documents two
mainoccurrences and denominator analysis. - Records harness results and the tier-1 hypothesis.
- Explains JIT listing capture and interpretation.
| File | Description |
|---|---|
src/MeshWeaver.Documentation/Data/Architecture/NodeTypeCompilation.md |
Adds the #890 investigation section and capture guidance. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| | [`35974400848`](https://github.com/Systemorph/MeshWeaver.Plugins/actions/runs/35974400848) / `107555406130` | `3.0.0-ci.9287` (`bf5ac8552`) | `BELOW-ROSLYN` ×43 | `READS-HEALTHY` ×43 | `EMITS` ×43 | `PRIVATE-COPY-EMITS` ×43 | `Widget/Thing`, 08:45:39Z | | ||
| | [`35985209459`](https://github.com/Systemorph/MeshWeaver.Plugins/actions/runs/35985209459) / `107589527570` | `3.0.0-ci.9296` (`8d3fd9f5d`) | ×41 | ×41 | `EMITS` ×41 | ×41 | `Widget/Thing`, 10:27:55Z | | ||
|
|
||
| Both attempt 2s passed on the same head and set. The stack is byte-identical to every earlier |
There was a problem hiding this comment.
Fixed in 6b3f328: each attempt 2 passed on the same head and platform set as its own attempt 1.
| What the position does and does not say: the same workload, in the same order, poisons one process | ||
| in ~16 and not the other fifteen. Whatever decides it is not in the workload's content or order — it | ||
| is decided **per process**. |
There was a problem hiding this comment.
Agreed, fixed in 6b3f328. It now says the outcome is not determined by content/order ALONE, and that the fixed position may be the deterministic trigger once a process carries the per-process condition.
| Locally, the tier-1 listing of `NamedTypeSymbol.AsNestedTypeDefinitionImpl` inlines | ||
| `SourceMemberContainerTypeSymbol.ContainingType` (`_containingSymbol as NamedTypeSymbol`) behind a |
There was a problem hiding this comment.
Fixed in 6b3f328: it now reads NamedTypeSymbolAdapter.AsNestedTypeDefinitionImpl. I also added why the JIT listing calls it NamedTypeSymbol:AsNestedTypeDefinitionImpl: in a Release Roslyn the adapter is a partial of NamedTypeSymbol, and the measured listing header prints that name, which is what a reader will grep for.
| locally. The file sits in `test-logs/`, which the collect step uploads **only when a suite failed**, | ||
| so a green run pays nothing and the `teardown-stragglers-*` artifact of the next occurrence holds the |
There was a problem hiding this comment.
Correct, fixed in 6b3f328. The listing is written on every run, so a green run pays the JIT disassembly of about 18 compilations plus a small local write. Only the artifact upload (storage) is failure-gated. The Plugins script comment says the same (Plugins#2357 @ 22313157).
…apter name, the green-run cost stated Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ame onset test Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on main Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
🔀 Merge-queue steward: re-queued alone (bisecting) — bisecting: your group of 2 pull requests failed on an uncatalogued assertion while this PR's own run was green; re-queued ALONE — if the solo build fails too, the PR stays out (group: #5661).
enqueued |

Docs only:
Doc/Architecture/NodeTypeCompilationgets a new #890 section, "2026-09-24 — two occurrences onmain, one onset position, and the capture that reads the code".portal-hosts (network-133 · leg 4/8),MeshWeaver.PluginCatalog.Test, runtime 10.0.12 linux-x64, Roslyn 5.9.0. Same stack, same verdicts as every earlier occurrence (BELOW-ROSLYN,READS-HEALTHY,flat=EMITS,PRIVATE-COPY-EMITS). Both runs went green on attempt 2.Widget/Thing), after emits that had already succeeded in the same host. So a fixed workload poisons about one process in 16, which means something is decided per process.AsNestedTypeDefinitionImpl, whose shape varies per process). This is not established, and the section says what would refute it.DOTNET_JitDisasmlistings of the six methods on every failing suite. The section explains how to read them.Pairs-with: none — documentation only, no public surface touched.
Mirror-sync: none — no localisation catalog change.
Refs #5212
🤖 Generated with Claude Code