Skip to content

chore(platform): core drops memex/ and the dead Roslynator pins (delete half) - #7297

Merged
rbuergi merged 2 commits into
mainfrom
chore/core-drops-modules-publish-targets
Oct 27, 2026
Merged

rbuergi merged 2 commits into
mainfrom
chore/core-drops-modules-publish-targets

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Core stops carrying the memex/ folder. Everything in it belonged to the portal hosts, which live in MeshWeaver.Plugins. This is the DELETE half. It stays a draft until Systemorph/MeshWeaver.Plugins#4333, the addition half, has merged, because core CD publishes the hosts from Plugins main at its head.

Deleted

  • memex/MeshModulesPublish.targets, which Plugins now carries as src/MeshModulesPublish.targets.
  • memex/aspire/Memex.Portal.ServiceDefaults, which Plugins now carries as src/Memex.Portal.ServiceDefaults.
  • memex/Directory.Build.props, which only served those two.
  • The MeshWeaver.slnx folder entries for memex/.
  • MeshWeaver.Hosting.Test's reference to ServiceDefaults, and AnArbitraryUrlFetcherGivingUpIsAWarningTest, which moved to Plugins' Memex.Portal.Shared.Test.
  • .aspire/settings.json and two .gitignore lines. All three pointed at memex/aspire/ paths core no longer has, including the AppHost.
  • memex from the scanned roots of 20 source guards. NoLiteralNulInSourceGuard refused the now-empty root, which is its job; the other 19 skipped it silently.
  • Roslynator: five PackageVersion pins no core project restores (measured from every obj/project.assets.json after a full solution restore). Their only use was a PackageReference Update= block in MeshWeaver.Layout.csproj that matched no Include. Every satellite that runs Roslynator pins it in its own list, and Plugins does not use it.

Kept: the reader side of the module layout (ImageModuleSeed, PlatformShippedAssemblies, MeshBuilder.ResolveModulePath). Their comments now name the Plugins paths.

Docs:

  • CoreCarriesNoGuiTechnology marks memex/ as moved.
  • CarvingProjectsOutOfCore records the second package pass.
  • Nine pages now name the new paths.

Verified locally, Release with -warnaserror:

  • MeshWeaver.slnx restores clean.
  • Compiler, PluginCatalog, Layout, Hosting.Test, Documentation.Test, Graph.Test and Hosting.Orleans.Test build with 0 warnings and 0 errors.
  • MeshWeaver.Documentation.Test passes 878 of 878.
  • InlineSvgEmissionBackplateGuard and PackableProjectReadmeTest pass 13 of 13.
  • GrainActivationSiteRatchetGuard passes 3 of 3.

Pairs-with: Systemorph/MeshWeaver.Plugins#4333
Satellite-pins: Roslynator.Analyzers — checked MeshWeaver.Plugins main: no PackageReference (Include or Update) to it in any csproj, props or targets file; no core project restores it either, so the pin governed nothing.
Satellite-pins: Roslynator.CodeAnalysis.Analyzers — checked MeshWeaver.Plugins main: no PackageReference (Include or Update) to it in any csproj, props or targets file; no core project restores it either, so the pin governed nothing.
Satellite-pins: Roslynator.CodeFixes — checked MeshWeaver.Plugins main: no PackageReference (Include or Update) to it in any csproj, props or targets file; no core project restores it either, so the pin governed nothing.
Satellite-pins: Roslynator.Formatting.Analyzers — checked MeshWeaver.Plugins main: no PackageReference (Include or Update) to it in any csproj, props or targets file; no core project restores it either, so the pin governed nothing.
Satellite-pins: Roslynator.Refactorings — checked MeshWeaver.Plugins main: no PackageReference (Include or Update) to it in any csproj, props or targets file; no core project restores it either, so the pin governed nothing.

🤖 Generated with Claude Code

rbuergi and others added 2 commits October 27, 2026 09:42
…te half)

memex/MeshModulesPublish.targets and memex/aspire/Memex.Portal.ServiceDefaults are MeshWeaver.Plugins'
now (Plugins#4333); memex/Directory.Build.props served only them. Gone with them: the slnx entries,
MeshWeaver.Hosting.Test's ServiceDefaults reference and AnArbitraryUrlFetcherGivingUpIsAWarningTest
(moved to Memex.Portal.Shared.Test), .aspire/settings.json and two .gitignore lines that pointed at
memex/aspire paths core no longer has, and 'memex' from every source guard's scanned roots.

Roslynator: five PackageVersion pins no core project restores, whose only use was a
PackageReference Update= block in MeshWeaver.Layout.csproj that matched no Include.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    25 files  ±0      25 suites  ±0   55m 50s ⏱️ - 1m 4s
11 894 tests  - 4  11 892 ✅  - 4  2 💤 ±0  0 ❌ ±0 
11 920 runs   - 4  11 918 ✅  - 4  2 💤 ±0  0 ❌ ±0 

Results for commit 8112cb8. ± Comparison against base commit 4cc5c17.

This pull request removes 63 and adds 22 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 ---, kind: "Timeout", layer: null)
 ---> (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) MeshWeaver.Messaging.HubDisposingException: Hub node/a is shutting down — cannot create "x". The address may reactivate (recycle / restart); retry to get the authoritative answer.
 ---> (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<---
…
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.Messaging.Hub.Test.FaultClassifierTest ‑ Classifies(shape: "a bare disposed object with no context — not prova"···, exception: System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'MemoryStream'., kind: "Fault", layer: null)
MeshWeaver.Messaging.Hub.Test.FaultClassifierTest ‑ Classifies(shape: "a cancellation whose timeout cause sits at aggrega"···, exception: System.OperationCanceledException: t
 ---> System.AggregateException: One or more errors occurred. (x) (The operation has timed out.)
 ---> System.InvalidOperationException: x
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) System.TimeoutException: The operation has timed out.<---

   --- End of inner exception stack trace ---, kind: "Timeout", layer: null)
MeshWeaver.Messaging.Hub.Test.FaultClassifierTest ‑ Classifies(shape: "a driver wrapping a connect timeout", exception: MeshWeaver.Messaging.Hub.Test.FaultClassifierTest+FakeDbException (0x80004005): Failed to connect
 ---> System.TimeoutException: The operation has timed out., kind: "Transient", layer: "Store")
MeshWeaver.Messaging.Hub.Test.FaultClassifierTest ‑ Classifies(shape: "a hub announcing its disposal", exception: MeshWeaver.Messaging.HubDisposingException: Hub node/a is shutting down — cannot create "stream". The address may reactivate (recycle / restart); retry to get the authoritative answer.
Object name: 'node/a'., kind: "HubTeardown", layer: null)
MeshWeaver.Messaging.Hub.Test.FaultClassifierTest ‑ Classifies(shape: "a mixed aggregate keeps the defect", exception: System.AggregateException: One or more errors occurred. (Success) (boom)
 ---> System.Net.Sockets.SocketException (0x80004005): Success
   --- End of inner exception stack trace ---
 ---> (Inner Exception #1) System.InvalidOperationException: boom<---
, kind: "Fault", layer: null)
…

♻️ This comment has been updated with latest results.

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 was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing. Review the Copilot code review billing settings.

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.

🔵 Needs a closer look

Plugins PR #4333 returned 404, so preservation of the deleted infrastructure and tests, and the required merge ordering, remain unverified.

No open issues 🎉

Review effort: Balanced

@rbuergi rbuergi added the review-waived Maintainers only: waives a review Copilot could not do (Automatic review answered, #4299) label Oct 27, 2026
@rbuergi

rbuergi commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor Author

Review re-requested on the maintainer's instruction (Copilot had refused for requester quota, review 5666576141); review-waived was briefly applied and removed again.

@rbuergi rbuergi removed the review-waived Maintainers only: waives a review Copilot could not do (Automatic review answered, #4299) label Oct 27, 2026
@rbuergi
rbuergi requested a balanced review from Copilot October 27, 2026 16:40
@systemorph
systemorph Bot enabled auto-merge October 27, 2026 16:40
@rbuergi
rbuergi merged commit 1090627 into main Oct 27, 2026
66 of 73 checks passed

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.

🔵 Needs a closer look

Plugins #4333 returned 404, so human review must confirm preservation of the relocated implementation and host/build wiring, and that the addition half has merged before this deletion lands.

No open issues 🎉

Review effort: Balanced

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.

🔵 Needs a closer look

The required companion PR, Systemorph/MeshWeaver.Plugins#4333, returned 404, preventing verification that the replacement files, updated host imports, and relocated tests are on the default branch before these deletions land.

No open issues 🎉

Review effort: Balanced

rbuergi added a commit that referenced this pull request Oct 28, 2026
…oy is declarable (#7514)

#7297 deleted memex/aspire/Memex.Portal.ServiceDefaults/Memex.Portal.ServiceDefaults.csproj.
The cross-repo pair gate's trigger is the surface report, which scans public types under src/
only, so it reported nothing for that file — and MeshWeaver.Deploy, whose chart guards check core
out and ProjectReference its paths, went red (MSB9008 + CS0246) on every pull request until it
adapted. Even a declaring author could not have paired it: Deploy was not in the register, so
`Pairs-with: Systemorph/MeshWeaver.Deploy#N` was refused as "not a sibling repository".

- check-cross-repo-pair.py lists the .csproj files the diff deletes or renames (merge base ->
  HEAD, rename-aware, -z), with its own control arm (a base tree under 20 project files fails),
  and either list being non-empty asks for the Pairs-with declaration.
- The register gains `pair-only-repos` (MeshWeaver.Deploy): declarable counterparts that the
  shared-rules gate does not read. The job's fleet-reader mint and probe cover it.
- Self-tests replay #7297's own deleted file (it passed before), a rename, a Deploy counterpart
  (refused before), the missing/starved report, and the listing over a real throwaway repo.

Refs #7415

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@rbuergi
rbuergi deleted the chore/core-drops-modules-publish-targets branch October 31, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants