Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Feedback hand-over cannot relocate re-typed legacy submissions: the Inbox move's copy leg refuses their legacy content $type

Closed
#6,951 9 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

A pull request for this has already been merged.

  • #6971 by @rbuergi — merged
  • #6976 by @rbuergi — merged

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
csharp
Domain
backend

Research direction

Start with Feedback/Feedback/Source/FeedbackHandover, following HandOverOnActivation, ReadSubmission, UnreadableSubmission, and MoveToInbox, then compare that path with the IMeshCatalog copy-leg validation and FeedbackContent shape. Inspect the four version histories and system activity logs to identify the retype actor and distinguish the candidate causes. Done means the responsible validation mismatch is established and covered by tests showing the intended behavior for both legacy-shaped and correctly shaped submissions.

Written by the indexing model from the issue text.

Description

bug sev:M

Observed

Four user-space feedback records under rbuergi/Feedback/ (created 2026-09-22, e.g. rbuergi/Feedback/20260922-white-home-page-hub-scoped-inject-and-the-local-monolith-cannot-start) were re-typed, and that retype stranded them:

  • Their version history shows version 1 created as NodeType Feedback with content {"$type":"Feedback","title":…,"message":…} — the pre-hardening shape (a $type that resolves to no type, plus a title member FeedbackContent does not declare).
  • A version-2 write by system-security, in the same half-second window as the failure burst, changed NodeType to Feedback/Feedback and left that content untouched.
  • The retype armed FeedbackHandover.HandOverOnActivation (Feedback/Feedback/Source/FeedbackHandover): the content deserializes as a plausible FeedbackContent at the source hub (no status member, so Status defaults to FeedbackStatus.New), the dead-letter classifier UnreadableSubmission never sees it (it only runs when the read returns null), and the watcher issued MoveNodeRequest from each source path to the derived Inbox address Feedback/_Submissions/fb-<sha256(source path)>.
  • Every move failed in the copy leg: the catalog's write validation refuses to store content whose $type discriminator (Feedback) is not the content type of NodeType Feedback/Feedback (FeedbackContent). The submissions never reached Feedback/_Submissions and were never handed to triage.

Where and when

One namespace, two pods — and the two pods belong to different ReplicaSet generations of the same deployment, so the failure spans a roll boundary. The burst was one rapid volley on one pod (all four distinct source nodes within half a second), followed much later by a single re-failure of the same source node on the other pod — consistent with the watcher's documented retry-on-activation: the move error clears the in-flight flag, and the next hub activation (here, on a second replica) retries the same refused move.

Impact

Four real defect reports filed by one user sit parked: not in the reviewers' Inbox, not handed to the triage agent, and re-attempted (and re-failed) on every hub activation. The records remain readable at their old user-space paths, so nothing is lost — a reviewer can find them by hand — but the automated feedback pipeline cannot deliver them, and there is no indication it ever will on its own.

Not established

  • What performed the retype. The version-2 rows say system-security, but which process that was (an agent, a repair flow, a supervisor) was not determined.
  • Whether the retries continue indefinitely or eventually stop.
  • Whether other user spaces hold more records in the same legacy shape that would fail identically once re-typed — only rbuergi/Feedback was examined.
  • Why the source hub's ContentAs<FeedbackContent> accepts the foreign $type while the catalog's write validation refuses it — the two readers disagree, and which of them is the defect is not established.
  • Whether these four records are the same batch as the "three filings" named in Plugins#3042, or a later one.
  • Whether it still occurs after the observation window.

Candidate causes and the reading that separates them

  1. The hand-over's read path is more permissive than its write path. ContentAs<FeedbackContent> tolerates the foreign $type, so the record classifies as a healthy New submission and the move fires — into a write the catalog must refuse. Predicts: any legacy-shaped record that gets re-typed fails this way, on every activation, forever. Separating reading: the absence of the dead-letter warning ([Feedback] {Path} is a submitted feedback that will NOT be handed over) in these hubs' logs proves the null-read branch was skipped, and a comparison of the source hub's serializer options against the catalog's write-validation rules shows where the tolerance lives.
  2. The retype itself is the defect — a half-repair. Something under the system identity rewrote nodeType without correcting the content, leaving the node in a state its own NodeType cannot store. Predicts: the version-2 writer is identifiable, and other nodes it touched in the same run show the same NodeType-only change. Separating reading: the system activity log for these four paths at the version-2 instant names the actor.
  3. The refusal is recent hardening and the move path has no way to relocate legacy content at all. The UnreadableSubmission documentation names core refusing such writes "now"; records predating that hardening may simply be unmovable. Predicts: a move of a correctly-shaped Feedback/Feedback record succeeds while only legacy-discriminator content fails. Separating reading: any successful Inbox move of a well-shaped record after the validation landed.

Where to look

  • Feedback/Feedback/Source/FeedbackHandover — HandOverOnActivation → ReadSubmission/UnreadableSubmission → MoveToInbox (the issuing side of the failed move).
  • Feedback/Feedback/Source/FeedbackContent — the declared shape (no title member; Status defaults to New).
  • Core MeshWeaver.Mesh.Services.IMeshCatalog — the MoveNode copy-leg write validation that refused the content.
  • NodeTypeRebindWatcher — retyping recycles the per-node hub (MeshWeaver#1104; the rebind-recycle race is separately reported at Feedback/_Submissions/fb-d41b207178ae8d91c1f24c9386f4e5b8).
  • The four source nodes and their version history under rbuergi/Feedback/.

Duplicates

No existing incident or issue covers this failure point. The same legacy content shape is known from Plugins#3042 (silent dead letters, since guarded by UnreadableSubmission), but here the record passes that guard and dies in the move's copy leg — a different failure point in the same pipeline.


Evidence
Fingerprint 5701e47922609264
Category MeshWeaver.Mesh.Services.IMeshCatalog
Severity Error
Namespace memex
Pods memex-portal-deployment-6465785d4d-5crgx, memex-portal-deployment-5b9996d768-22ght, memex-portal-deployment-5c6db59b64-nknln, memex-portal-deployment-5c6db59b64-dxvhx, memex-portal-deployment-5c6db59b64-cnv4s, memex-portal-deployment-6cc54b7cd8-l8wwl, memex-portal-deployment-6cc54b7cd8-clcfk, memex-portal-deployment-7475bdcffd-qh8bq, memex-portal-deployment-5b786c4466-4fs6c, memex-portal-deployment-5b786c4466-dxwlb, memex-portal-deployment-576cdb4fbd-wdsqd, memex-portal-deployment-679d7b6984-tzd87, memex-portal-deployment-679d7b6984-cqqp2, memex-portal-deployment-679d7b6984-rgr95, memex-portal-deployment-7bc8cb4d47-npczw
Occurrences 79
First seen 2026-10-12 18:17:08Z
Last seen 2026-10-18 07:56:19Z
Routing not determined — no configured route matches the category MeshWeaver.Mesh.Services.IMeshCatalog. 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-10-13 00:38:20Z memex-portal-deployment-679d7b6984-tzd87 fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-public-host-redirect-not-running-on-memex-cloud-since-ci-9178 -> Feedback/_Submissions/fb-a3e67b570724e691f35f01443f428e31 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-a3e67b570724e691f35f01443f428e31': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-13 15:04:25Z memex-portal-deployment-679d7b6984-tzd87 fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-ratify-severity-closes-on-verification-policy -> Feedback/_Submissions/fb-119c44266b8191d39d9a3be71a7bbccf failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-119c44266b8191d39d9a3be71a7bbccf': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-13 15:04:52Z memex-portal-deployment-679d7b6984-cqqp2 fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-logincident-namespace-is-one-value-over-a-multi-deployment-pod-set -> Feedback/_Submissions/fb-08c293baf5b6b5c60ae1f1439413f124 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-08c293baf5b6b5c60ae1f1439413f124': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-13 15:05:28Z memex-portal-deployment-679d7b6984-rgr95 fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-white-home-page-hub-scoped-inject-and-the-local-monolith-cannot-start -> Feedback/_Submissions/fb-bce3a339096ef56cfe358accb890ecf0 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-bce3a339096ef56cfe358accb890ecf0': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-13 15:05:42Z memex-portal-deployment-679d7b6984-tzd87 fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-public-host-redirect-not-running-on-memex-cloud-since-ci-9178 -> Feedback/_Submissions/fb-a3e67b570724e691f35f01443f428e31 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-a3e67b570724e691f35f01443f428e31': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-18 07:56:18Z memex-portal-deployment-7bc8cb4d47-npczw fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-0320-a-rejected-provider-credential-401-is-classified-by-nothing-and-pastes-the-raw-sdk-banner -> Feedback/_Submissions/fb-623c87ce9112918a7928a50aad10258e failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-623c87ce9112918a7928a50aad10258e': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issue', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-18 07:56:18Z memex-portal-deployment-7bc8cb4d47-npczw fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-0305-incident-bot-opened-one-fingerprint-twice-and-the-duplicate-carries-the-sev-h -> Feedback/_Submissions/fb-9b299174d88de8345e62b7c546dc5f2f failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-9b299174d88de8345e62b7c546dc5f2f': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issue', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-18 07:56:19Z memex-portal-deployment-7bc8cb4d47-npczw fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-0315-a-fix-that-keeps-its-log-line-can-never-go-quiet-so-the-incident-count-reopens-it-forever -> Feedback/_Submissions/fb-3519e045c21ee25129eea7b232a1de03 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-3519e045c21ee25129eea7b232a1de03': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issue', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-18 07:56:19Z memex-portal-deployment-7bc8cb4d47-npczw fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-plugin-registry-index-per-request-cost -> Feedback/_Submissions/fb-0f8b71217ac13ad422c90ba7b459e72b failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-0f8b71217ac13ad422c90ba7b459e72b': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issue', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.
2026-10-18 07:56:19Z memex-portal-deployment-7bc8cb4d47-npczw fail: MeshWeaver.Mesh.Services.IMeshCatalog[0]
      [MoveNode] rbuergi/Feedback/20260922-logs-instanceaction-budget-and-bus-write -> Feedback/_Submissions/fb-704741a97a39f2cb04ad857bfdc83a32 failed in its copy leg (Unknown): Cannot write 'Feedback/_Submissions/fb-704741a97a39f2cb04ad857bfdc83a32': the content names its type as 'Feedback' ("$type"), but no such type exists — the content type of NodeType 'Feedback/Feedback' is 'FeedbackContent'. The content would be stored exactly as sent and then read as an empty node by every consumer, and anything that reacts to this NodeType would skip it without a word. Send the content as 'FeedbackContent' with its declared members: 'category', 'extraContext', 'handedOverAt', 'issue', 'issueUrl', 'mainNodeGist', 'mainNodePath', 'mainNodeTitle', 'message', 'sidePanel', 'status', 'submittedBy', 'submittedByName', 'timestamp'.

This log site's previous ticket, https://github.com/Systemorph/MeshWeaver/issues/6310, was closed about a different fingerprint, and this fault fired after that close. It is left closed: an occurrence of this fingerprint is no evidence that the fault it was closed for came back. This issue now tracks the log site, and later fingerprints of it fold in here.

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

Dominant language
C#
Stars
12
Forks
5
Avg merge
5h 56m
Merged PRs (30d)
971

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Systemorph/MeshWeaver

All issues in Systemorph/MeshWeaver

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.