Skip to content

fix(mcp): tool answers spell + < > & as themselves — the reviewer read += as \u002B= (Plugins#2804) - #6239

Merged
rbuergi merged 2 commits into
mainfrom
fix/tool-answers-unescaped-2804
Oct 7, 2026
Merged

rbuergi merged 2 commits into
mainfrom
fix/tool-answers-unescaped-2804

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Refs Systemorph/MeshWeaver.Plugins#2804

The defect

The internal pull-request reviewer reads a PR's unified diff with one get of its Hosting/TriageItem. MeshOperations wrote that answer (and every other tool answer) with hub.JsonSerializerOptions. Those options use System.Text.Json's HTML-safe default encoder, which spells + < > & ' `` `` and all non-ASCII as \uXXXX.

The round's own stored tool result shows what the model received (thread Hosting/Triage/_Thread/review-pull-request-systemorph-meshweave-929d, z-ai/glm-5.3), and the negative control below reproduces it byte for byte:

\n\u002B        runs \u002B= json.loads(out or \u0022{}\u0022).get(\u0022workflow_runs\u0022, [])

Here the added-line marker and the operator are spelled the same way. scripts/pr-supersede.py at e7c2abf7b/790e638e2 has exactly two += lines (78 and 126). Three separate review rounds on Plugins#2461 reported both of them as plain assignments, and two of those findings were blocking: comments 4116904325, 4117032726 and 4117265000.

It is a pattern, not a one-off

I sampled the last ~700 review comments on core and Plugins and kept the blocking findings that were rebutted on the thread. Four of the seven false blockers misread a character this encoder rewrites:

The fix

ToolAnswerJson serializes through a Utf8JsonWriter with JavaScriptEncoder.UnsafeRelaxedJsonEscaping. It keeps the hub's converters, naming and $type, so every answer parses to the same document as before and only the spelling changes. A tool answer is never embedded in HTML, so the relaxed encoder is the correct one here. Every answer site in MeshOperations (and RunTests) now uses it. Three call sites are left as they were because they are not answers: a property-name lookup, a content round-trip validation, and the export manifest file.

Evidence

  • AToolAnswerSpellsSourceCharactersAsThemselvesTest (Graph.Test), 2/2 passing:
    • It creates a node holding the misread hunk, calls get, and asserts that runs += …, + failures += …, /// <summary>a && b … appear literally and that no \u002B/\u003C/\u0026 does. It also parses the answer back and checks it equals the stored value.
    • Control: the hub-options serialization of the same node does contain \u002B=, so the test cannot pass vacuously.
    • Shape: JsonNode.DeepEquals(relaxed, hub) is true.
  • Negative control, run: with MeshOperations.cs reverted, the Get case FAILS, and its DIAG shows "description":"@@ -0,0 \u002B1,3 @@\n\u002B runs \u002B= json.loads(out or \u0022{}\u0022)…". That is the reviewer's input.
  • Regression: every MeshOperations suite in Memex.Portal.Shared.Test passed (64/64), as did the Graph MeshOperations tests (10/10).
  • dotnet build -c Release -warnaserror is clean, one project at a time, for: Mesh.Operations, Graph.Test, Memex.Portal.Shared.Test, PluginTester and Documentation.

Rollout

This reaches the reviewer only once the control instance (memex.systemorph.com) runs an image with this commit. Agent rounds and MCP both go through MeshOperations.Get, in MeshPlugin.Get and McpMeshPlugin.Get respectively. No per-node hub needs recycling, because MeshOperations is constructed per plugin and holds no cached answers.

What I did not establish

Pairs-with: none — adds a public type and changes answer spelling only; no public member removed.
Implementers: none — no interface member added.
Mirror-sync: none — no catalog key added or changed.

🤖 Generated with Claude Code

… `+=` as `+=`

MeshOperations wrote every tool answer (get, search, status envelopes) with the hub's
serializer options, whose default encoder is HTML-safe. A PR diff therefore reached the
internal reviewer as `\n+        runs += json.loads(...)` - the added-line marker and
the operator spelled identically - and three review rounds on Plugins#2461 reported the
file's only two `+=` lines as assignments, one as a BLOCKING finding that held the PR
(Plugins#2804). The same spelling sits under rebutted blockers on core (#6181 `failures +=`,
#6162 `names +=`, #6210 `/// <summary>` read as a stray end tag).

ToolAnswerJson writes the answer through a Utf8JsonWriter with the relaxed encoder, keeping
the hub's converters/naming - the answer parses to the same document, only the spelling
changes. Pinned by AToolAnswerSpellsSourceCharactersAsThemselvesTest (negative control: with
MeshOperations reverted, the Get case fails showing exactly the reviewer's `+=` input).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 7, 2026 10:42
@meshweaver-cloud
meshweaver-cloud Bot enabled auto-merge October 7, 2026 10:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Three central documentation passages incorrectly show the old escaped output as literal source characters.

Review effort: Balanced
Findings: 3 Low severity

Open (3)
What changed in this PR

This PR preserves source characters in MCP/tool JSON answers so reviewers and agents interpret diffs correctly.

Changes:

  • Adds relaxed JSON serialization for tool responses.
  • Migrates MeshOperations response sites to the new serializer.
  • Adds regression coverage and documentation.
File Description
ToolAnswerJson.cs Adds relaxed tool-answer serialization.
MeshOperations.cs Applies it across tool responses.
MeshOperations.RunTests.cs Applies it to test-run responses.
AToolAnswerSpellsSourceCharactersAsThemselvesTest.cs Tests spelling and semantic equivalence.
MeshPlugin.md Documents the response encoding contract.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/MeshWeaver.Documentation/Data/AI/Tools/MeshPlugin.md
Comment thread src/MeshWeaver.Mesh.Operations/ToolAnswerJson.cs
@systemorph-com systemorph-com Bot added the thread:pr-systemorph-meshweaver-6239-1f94d5 https://memex.systemorph.com/Hosting/Triage/_Thread/pr-systemorph-meshweaver-6239 label Oct 7, 2026
@systemorph-com
systemorph-com Bot disabled auto-merge October 7, 2026 10:46
@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    8 files   -    14      8 suites   - 14   20m 54s ⏱️ - 28m 17s
5 328 tests  - 5 604  5 328 ✅  - 5 411  0 💤  - 193  0 ❌ ±0 
5 336 runs   - 5 609  5 336 ✅  - 5 416  0 💤  - 193  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 5635 and adds 7 tests. Note that renamed tests count towards both.

   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---, expected: True)
   --- End of inner exception stack trace ---, isDenial: True)
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---
 ---> (Inner Exception #1) MeshWeaver.Messaging.Hub.Test.InfrastructureFaultTest+ProviderException (0x80004005): Failed to connect to 10.42.18.4:5432<---
 ---> (Inner Exception #1) System.ArgumentException: Value does not fall within the expected range.<---
 ---> (Inner Exception #1) System.InvalidOperationException: boom<---
 ---> (Inner Exception #1) System.InvalidOperationException: source B is misconfigured<---
 ---> (Inner Exception #1) System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known<---
…
MeshWeaver.Compiler.Pipeline.Test.SourcesWatcherStallBackoffTest ‑ The_production_classifier_recognises_a_stall_through_every_wrapping(because: "a stall as an aggregate's FIRST member", fault: System.AggregateException: One or more errors occurred. (Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.)
 ---> MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.
   --- End of inner exception stack trace ---, expected: True)
MeshWeaver.Compiler.Pipeline.Test.SourcesWatcherStallBackoffTest ‑ The_production_classifier_recognises_a_stall_through_every_wrapping(because: "a stall as an aggregate's SECOND member", fault: System.AggregateException: One or more errors occurred. (The operation has timed out.) (Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.)
 ---> System.TimeoutException: The operation has timed out.
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---
, expected: True)
MeshWeaver.Compiler.Pipeline.Test.SourcesWatcherStallBackoffTest ‑ The_production_classifier_recognises_a_stall_through_every_wrapping(because: "a stall nested in an aggregate inside a wrapper", fault: System.InvalidOperationException: outer
 ---> System.AggregateException: One or more errors occurred. (Value does not fall within the expected range.) (Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.)
 ---> System.ArgumentException: Value does not fall within the expected range.
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---

   --- End of inner exception stack trace ---, expected: True)
MeshWeaver.Compiler.Pipeline.Test.SourcesWatcherStallBackoffTest ‑ The_production_classifier_recognises_a_stall_through_every_wrapping(because: "a stall wrapped as InnerException", fault: System.InvalidOperationException: outer
 ---> MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.
   --- End of inner exception stack trace ---, expected: True)
MeshWeaver.Compiler.Pipeline.Test.SourcesWatcherStallBackoffTest ‑ The_production_classifier_recognises_a_stall_through_every_wrapping(because: "an aggregate of unrelated faults", fault: System.AggregateException: One or more errors occurred. (The operation has timed out.) (Value does not fall within the expected range.)
 ---> System.TimeoutException: The operation has timed out.
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) System.ArgumentException: Value does not fall within the expected range.<---
, expected: False)
MeshWeaver.Graph.Test.AToolAnswerSpellsSourceCharactersAsThemselvesTest ‑ Get_WritesADiffsPlusSignsAndAngleBrackets_AsThemselves
MeshWeaver.Graph.Test.AToolAnswerSpellsSourceCharactersAsThemselvesTest ‑ ToolAnswerJson_ParsesToTheSameDocument_AsTheHubsSerialization

♻️ This comment has been updated with latest results.

…prose

The rationale in ToolAnswerJson, the test's incident note and the MeshPlugin doc showed the
reviewer's input with literal `+`, which states the opposite of the defect: the authoring
tool decoded the escapes on the way into the files (the same class of defect this PR fixes).
The examples are now written as the literal escape text the model received. The first
commit's message carries the same decoding; this message and the PR body are authoritative.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 7, 2026 10:49
@meshweaver-cloud
meshweaver-cloud Bot enabled auto-merge October 7, 2026 10:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The centralized change preserves JSON structure, covers all identified answer sites, and includes focused regression tests.

Review effort: Balanced
Findings: None

Resolved since last review (3)

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

  1 files   -     3    1 suites   - 3   45s ⏱️ - 5m 12s
410 tests  - 2 192  410 ✅  - 2 192  0 💤 ±0  0 ❌ ±0 
410 runs   - 2 196  410 ✅  - 2 196  0 💤 ±0  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 2602 and adds 410 tests. Note that renamed tests count towards both.
Memex.Portal.Shared.Test.ADeclaredProtectedSegmentSurvivesTheBootHealTest ‑ ADeclaredProtectedSegment_IsPublishedThroughGrantsAndNeverThroughAPublicReadPolicy
Memex.Portal.Shared.Test.ADeclaredProtectedSegmentSurvivesTheBootHealTest ‑ ADeclaredProtectedSegment_OnAPartitionThatWithholdsPublicRead_IsGatedButNotOpened
Memex.Portal.Shared.Test.ADeclaredProtectedSegmentSurvivesTheBootHealTest ‑ AnUndeclaredButProtectedSegment_IsNotRetiredAndNotRepublishedByTheHeal
Memex.Portal.Shared.Test.AFailedPackageNamesItsCauseTest ‑ ACause_KeepsTheInnermostException_AndIsBounded
Memex.Portal.Shared.Test.AFailedPackageNamesItsCauseTest ‑ AFailedPackage_IsNamedWithItsCause_AndTheCauseLeavesWhenItLands
Memex.Portal.Shared.Test.AFailedPackageNamesItsCauseTest ‑ AFailureRecordedWithoutACause_SaysSo_AndACauseWithoutAFailureIsDropped
Memex.Portal.Shared.Test.AReservedIdIsNeverASignInTest ‑ AReservedLocalPart_ResolvesToAnonymous(username: "SYSTEM-SECURITY@attacker.onmicrosoft.com")
Memex.Portal.Shared.Test.AReservedIdIsNeverASignInTest ‑ AReservedLocalPart_ResolvesToAnonymous(username: "anonymous@attacker.onmicrosoft.com")
Memex.Portal.Shared.Test.AReservedIdIsNeverASignInTest ‑ AReservedLocalPart_ResolvesToAnonymous(username: "public@attacker.onmicrosoft.com")
Memex.Portal.Shared.Test.AReservedIdIsNeverASignInTest ‑ AReservedLocalPart_ResolvesToAnonymous(username: "system-security@attacker.onmicrosoft.com")
…
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ Frames_ArriveDuringSubscribe_EvenInsideAForeignTrampoline
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ MenuChromeFrame_ThenGreenTable_ReportsThePassSummary
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ NoFrames_TimesOut_WithTheGenericNoVerdict
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ NotFoundFrame_ThenGreenTable_IsPassed
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ OnlyNotFoundFrames_TimesOut_ReportingTheLastTransientState
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ ProgressFrame_ThenGreenTable_IsPassed_AndACutRunNamesItsProgress
MeshWeaver.PluginTester.Test.AreaProbeTest ‑ RedRow_FailsImmediately
MeshWeaver.PluginTester.Test.BakeAgainstPlatformHostTest ‑ AComposedModuleTheHostAlsoShips_IsRefusedByName
MeshWeaver.PluginTester.Test.BakeAgainstPlatformHostTest ‑ AHostWhoseAnchorStatesNoKey_IsRefused_NeverFallenBackOn
MeshWeaver.PluginTester.Test.BakeAgainstPlatformHostTest ‑ AHostWhoseToolchainBuildDiffersWithinTheKey_IsNotRefusedForIt
…

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

  2 files   -     2    2 suites   - 2   1m 1s ⏱️ - 15m 54s
691 tests  - 2 908  691 ✅  - 2 908  0 💤 ±0  0 ❌ ±0 
691 runs   - 2 911  691 ✅  - 2 911  0 💤 ±0  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 3623 and adds 691 tests. Note that renamed tests count towards both.

   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---, expected: True)
   --- End of inner exception stack trace ---, isDenial: True)
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---
 ---> (Inner Exception #1) MeshWeaver.Messaging.Hub.Test.InfrastructureFaultTest+ProviderException (0x80004005): Failed to connect to 10.42.18.4:5432<---
 ---> (Inner Exception #1) System.ArgumentException: Value does not fall within the expected range.<---
 ---> (Inner Exception #1) System.InvalidOperationException: boom<---
 ---> (Inner Exception #1) System.InvalidOperationException: source B is misconfigured<---
 ---> (Inner Exception #1) System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known<---
…
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ ADuplicateCloseSurvivesTheWebhook
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ AnOpenIssueCarriesNoCloseDecision
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "completed", expected: Completed)
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "duplicate", expected: Duplicate)
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "not_planned", expected: NotPlanned)
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ BothDetectorsSeeTheDefectTheyWereWrittenFor
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ EveryPairsRuleIsStillStatedInAgentsMd
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ NoSkillCarriesASupersededRulesWording
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ NoSkillMintsAFileUnderAWhatsNewPath
MeshWeaver.Documentation.Test.AmbientCultureRatchetGuard ‑ NoSourceFile_ReachesForAnAmbientCulture
…

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

    1 files   -   4      1 suites   - 4   3m 53s ⏱️ -13s
1 369 tests +183  1 369 ✅ +183  0 💤 ±0  0 ❌ ±0 
1 369 runs  +182  1 369 ✅ +182  0 💤 ±0  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 1167 and adds 1350 tests. Note that renamed tests count towards both.
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "ghcr.io/systemorph/memex-portal-ai:main", isTester: False)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/MW-Plugin-Test@sha256:abc", isTester: True)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/memex-portal-ai@sha256:abc", isTester: False)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/mw-plugin-test:3.0.0-rc9.ci."···, isTester: True)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_OnAnAbsentPath_IsSilent
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_RemovesTheTree
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_ThatCannotBeRemoved_ReportsAndDoesNotThrow
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ EveryRun_StartsThePlatformImagesDotnet_OnTheComposedHostsTesterCli
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ExtractComposeScript_WritesTheScriptWhereTheCliRunsIt
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ MountsAndEnvironment_LandBeforeTheImage
…
MeshWeaver.Graph.Test.AToolAnswerSpellsSourceCharactersAsThemselvesTest ‑ Get_WritesADiffsPlusSignsAndAngleBrackets_AsThemselves
MeshWeaver.Graph.Test.AToolAnswerSpellsSourceCharactersAsThemselvesTest ‑ ToolAnswerJson_ParsesToTheSameDocument_AsTheHubsSerialization
MeshWeaver.Graph.Test.AccessControlGrantByEmailTest ‑ GrantByEmail_ExistingUser_GrantsSelectedRoleImmediately_NoPin
MeshWeaver.Graph.Test.AccessControlGrantByEmailTest ‑ GrantByEmail_UnknownUser_SchedulesGrantAtNodePath_ThenLandsOnSignUp
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ ABellOnlyRequest_NeverReachesTeamsOrEmail_WhateverThePreference
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ ConcurrentGrants_StillSpendExactlyTheBudget_AndTellTheGranterOnce
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ EachGranterHasTheirOwnBudget_AndANewWindowStartsAFreshOne
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ TheFirstThreeGrantsMayMail_TheFourthTellsTheGranter_TheRestAreBellOnly
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ TheNotifier_ABulkGrantMailsThreeRecipients_AndTellsTheGranterOnce
MeshWeaver.Graph.Test.AccessGrantMailBudgetTest ‑ TheSweep_KeepsThePreviousWindow_AndDeletesOnlyOlderOnes
…

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

    1 files   -   3      1 suites   - 3   4m 3s ⏱️ - 1m 34s
1 170 tests  - 688  1 170 ✅  - 686  0 💤  - 2  0 ❌ ±0 
1 171 runs   - 687  1 171 ✅  - 685  0 💤  - 2  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 1818 and adds 1130 tests. Note that renamed tests count towards both.
MeshWeaver.ContentCollections.Test.ContentCollectionClaimApplyRaceTest ‑ TornIngestOvertakenBetweenClaimAndPost_CannotOverwriteTheLaterTriggeredArticle
MeshWeaver.ContentCollections.Test.ContentCollectionConnectionOwnedByHubTest ‑ AfterTheHubsTeardown_GetCollectionIsRefused_NotServedFromTheReplay
MeshWeaver.ContentCollections.Test.ContentCollectionDiesWithItsHubTest ‑ DisposingTheHub_DisposesTheCollectionsItsContentServiceCreated
MeshWeaver.ContentCollections.Test.ContentCollectionIngestOrderTest ‑ TornReadFromTheCreatedEvent_CannotOverwriteTheCompleteArticle
MeshWeaver.ContentCollections.Test.ContentCollectionWriteIngestTest ‑ SaveFile_ingests_the_article_without_the_watcher
MeshWeaver.ContentCollections.Test.ContentCollectionWriteReadRaceTest ‑ Write_Succeeds_While_A_Concurrent_Read_Holds_The_File
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ A_collection_already_qualified_by_its_address_is_not_qualified_twice
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_file_notifies_observers_with_the_qualified_collection_path
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_folder_notifies_observers_once_per_contained_file
MeshWeaver.ContentCollections.Test.ContentServiceDelegationTest ‑ ContentService_ShouldDelegateToParent
…
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ ADeniedRoleIsNotAWriteGrant
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ ASelfConsistentRootGrant_IsAllowedAtTheWriteBoundary_ButNeverOfferedInTheUi
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ AnEntitlementIsStillAllowed(role: "Commenter")
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ AnEntitlementIsStillAllowed(role: "Viewer")
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ AnOrdinarySpaceIsUntouched
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ AssignmentOffAGrantPath_IsIgnored
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ BijectiveSync_IsNotSystemOwned
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ CanGrantAt_APartitionContext_IsAllowed(scope: "Admin")
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ CanGrantAt_APartitionContext_IsAllowed(scope: "AgenticEngineering")
MeshWeaver.Graph.Test.AccessAssignmentGuardTest ‑ CanGrantAt_APartitionContext_IsAllowed(scope: "Store/Plugin")
…

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

  1 files   -   2    1 suites   - 2   6m 56s ⏱️ -58s
357 tests  - 212  357 ✅  - 21  0 💤  - 191  0 ❌ ±0 
361 runs   - 212  361 ✅  - 21  0 💤  - 191  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 212 tests.
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffTest ‑ TheOwnerIsHandedOffAwayFromTheHolder_AndTheHeldReadDeliversTheWrite
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffWithoutTheChangeFeedTest ‑ WithoutTheChangeFeed_TheHeldReadFollowsTheOwner_ThroughTheHeartbeat
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillWithoutInvalidationTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloBeingKilledTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloDrainingTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACreateAcknowledged_IsWritableAtOnce_FromTheOtherSilo
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACrossReplicaCreate_UnderAnExistingParent_WithALateNotification_IsWritableByTheProber
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACrossReplicaCreate_WithALateNotification_IsWritableByTheProber_BeforeTheNotificationArrives
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ APreCreateProbe_DoesNotPoisonTheFirstWriteAfterTheCreate
…

@systemorph-com
systemorph-com Bot disabled auto-merge October 7, 2026 11:01
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    2 files  ±  0      2 suites  ±0   4m 12s ⏱️ - 4m 28s
1 331 tests +213  1 331 ✅ +213  0 💤 ±0  0 ❌ ±0 
1 334 runs  +215  1 334 ✅ +215  0 💤 ±0  0 ❌ ±0 

Results for commit 87e0ac1. ± Comparison against base commit c375173.

This pull request removes 1118 and adds 1331 tests. Note that renamed tests count towards both.
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatDidNotMove_CompilesFromTheBatchSet
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatMovedDuringTheSweep_IsJudgedAsItNowStands(newCode: "public static class ConsumerApi { public static in"···, expected: CompileError)
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatMovedDuringTheSweep_IsJudgedAsItNowStands(newCode: "public static class ConsumerApi { public static in"···, expected: Compiled)
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ AGenuineCompileError_StillGates
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ AMovedDefinitionWhoseSourcesCannotBeEstablished_IsNotEvaluated
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ASourceEditedUnderUnchangedQueries_IsCompiledAsItNowStands
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ATypePrunedDuringTheSweep_IsRemoved_AndNotRecreated
MeshWeaver.Hosting.Test.ABakedTypeRegistersWithoutAnInstanceTest ‑ ABakedTypeNobodyActivated_IsRegisteredByThePass_WithoutARecompile
MeshWeaver.Hosting.Test.ABakedTypeRegistersWithoutAnInstanceTest ‑ ATypeWithNoBuild_IsSkipped_NotCompiled
MeshWeaver.Hosting.Test.ACloseCarriesItsReasonTest ‑ AnAbsentOrUnknownReasonIsUnknown_NotCompleted(wireValue: "   ")
…
MeshWeaver.Compiler.Pipeline.Test.AFailedCompileCarriesTheSetItConsumedTest ‑ TheFailureResult_FoldsTheConsumedSetUnderTheSameRuleAsTheLiveSnapshot
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ APrebuiltAdoption_RetiresThePreviousBuildsPendingRelease
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ AReleaseAtAnotherPath_IsNotAdopted_AndTheStampStands
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ ARelease_LandingAtTheStampedPath_IsAdopted
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ AReplayOfThePendingBuild_PreservesItsMarker
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ ASeedReturningThePendingCoordinates_KeepsTheLateReleaseWatch
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ Adopt_LeavesTheNodeAlone_ForAnyOtherPath(landed: "")
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ Adopt_LeavesTheNodeAlone_ForAnyOtherPath(landed: "T/Release/20260923055426-OtherByt")
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ Adopt_LeavesTheNodeAlone_ForAnyOtherPath(landed: "t/release/20260923055416-hd-ifsia")
MeshWeaver.Compiler.Pipeline.Test.ALateReleaseIsAdoptedWhenItLandsTest ‑ Adopt_LeavesTheNodeAlone_WhenALaterSettleClearedTheStamp
…

@rbuergi
rbuergi merged commit 57a6e5f into main Oct 7, 2026
@rbuergi
rbuergi deleted the fix/tool-answers-unescaped-2804 branch October 10, 2026 13:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

thread:pr-systemorph-meshweaver-6239-1f94d5 https://memex.systemorph.com/Hosting/Triage/_Thread/pr-systemorph-meshweaver-6239

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants