Repository navigation
Description
Caveat on this report
This was investigated externally, without direct access to the AKS cluster or the
Azure subscription it runs on — via the GitHub API, the public HTTP surface of
memex.meshweaver.cloud, and browser checks in Settings. Everything below is what
was observable from outside; there may be a straightforward explanation we simply
couldn't see from this vantage point (e.g. a config difference on this specific
deployment, a rollout in progress, or something particular to how this environment is
set up). Filing this as a feature request with the observations attached, rather than
as a confirmed bug report, for that reason.
The need
It would help both users and operators to have a reliable way to tell how current a
live deployment is — whether a recently-merged fix on main is expected to be live
yet, or still in flight. As far as we could tell, there is currently no way to answer
"is this deployment up to date?" without someone with direct cluster access checking
the running pod's image tag by hand on the production subscription on Azure.
What may already exist (this could just be a visibility gap on our end)
An "About" settings tab (global, ungated) appears to already exist in the codebase,
added in 1bd78e931 (2026-07-08, "About page, What's New feed, top-bar theme toggle
& build-commit stamping"): it's described as showing the platform version and the
git commit the build came from, linking to it on GitHub. A "What's New" feed appears
to have landed in the same commit. Pull request #897 (2026-08-07) appears to extend
the About tab with an installed-plugin inventory.
If this is working as intended, this report is really about reachability/reporting
accuracy, not about needing new functionality. We're genuinely unsure which of the
possibilities below applies — flagging both rather than assuming.
What we observed, for context
On memex.meshweaver.cloud, we could not find an About tab or a What's New tab in
global Settings, after a hard refresh and again with a completely fresh
session/cookie (so far as we could tell, this ruled out simple client-side caching
and being pinned to one specific backend pod via session affinity — though we can't
rule out possibilities we didn't think to test).
This seemed worth mentioning alongside a possibly-related data point: Systemorph/ Memex's GitHub Deployments record (which that repo documents as the registry of
record for this deployment) shows one status entry:
memex-cloud— success — "Running 3.0.0-ci.1842 (rolled by in-pod self-updater)" —
posted 2026-08-06T06:40:38Z
ci.1842 appears to correspond to MeshWeaver's CD workflow run #1842, created
2026-08-05T22:30:53Z from commit 1af1aaa84 — which, if we traced the history
correctly (git merge-base --is-ancestor), is a descendant of 1bd78e931 and so
would include the About tab. We flag this only as a possible inconsistency worth
someone double-checking with actual cluster access — we may well be misreading one or
both signals.
Possible directions (not mutually exclusive, and there may be others)
- The deployment hasn't picked up recent changes for some reason, and the posted
status doesn't currently reflect that — in which case the self-update /
status-reporting path might be worth a look. - The relevant tabs are present in the running code but aren't rendering or
registering for some reason specific to this environment — in which case it'd be
a matter of finding what's suppressing them, likely without any visible error. - Something about our investigation method missed the actual explanation entirely,
and someone with direct access would resolve this quickly.
If it turns out the reported deployment status doesn't always match what's actually
serving traffic, it might be worth considering how to keep those in sync — though we
recognize there may be good reasons for the current behavior that we're not aware of.
Possible next steps, offered tentatively
- If convenient: confirming whether the running
memex-portal-*pod's actual image
tag / creation timestamp is what's expected. - If the image turns out to be current: checking whether
MemexConfiguration's hub
setup reachesAddAboutSettingsTab()without an earlier issue interrupting it. - If useful: double-checking whether the self-updater's status-posting could be
timed to when a rollout is confirmed serving, rather than when it starts — though
this may already be how it works and we're misreading the timeline.
Why we thought this worth raising
Even setting aside the specific observations above, a simple, trustworthy way to see
"what is this deployment actually running" seems like it would be broadly useful —
for confirming a fix landed, and more generally for anyone trying to reason about
deployment state without cluster access.
Activity
sierragolflima commentedon Aug 10, 2026
Follow-up: the underlying build-currency fix in this issue is correct, but its own
entry points — "About" and "What's New" from the profile menu — currently 404 for
what looks like an unrelated code defect, independent of any deployment question.
Repro
Click the profile/account avatar top-right (not Settings — see "Where this is meant
to live" below), then About or What's New. The page loads with:
(Note: that message named
WhatsNeweven when the address bar showed.../About—possibly a separate stale-error-display issue, not chased further here.)
Likely cause
_Setting— singular, capital S(
GlobalSettingsNodeType.SettingsPath,src/MeshWeaver.Graph/Configuration/GlobalSettingsNodeType.cs:21)._settings— plural, lowercase(
UserProfile.razor.cs:170,172,src/MeshWeaver.Blazor.Portal/Components/UserProfile.razor.cs):_settings(lowercase) is otherwise used elsewhere in the codebase as a reservedsatellite/schema segment name in the cross-schema Postgres/Snowflake routing — an
unrelated meaning — not as an alias for this node.
If the mesh path resolver is case/spelling-sensitive here (as a related fixed bug —
PgOnlyProdShapeTests.ResolvePath_AreaSuffixOnExistingPartition_FallsBackToMainNode— suggests it is for adjacent shapes), this mismatch alone would 404 on any
deployment, current or not. Not confirmed by running the app locally, so flagging as
a strong lead rather than a proven root cause.
Where this is meant to live — worth clarifying regardless of the above
Separately from the routing bug: it took real back-and-forth to find "About" at all,
because the naming is inconsistent about where it belongs:
AddAboutSettingsTab(), grouped in a long chain ofAdd*SettingsTab()calls alongsideApiTokens,Instances,Notifications, etc.— all of which render in the per-user Settings navigation tree
(
Home > {user} > Settings).GlobalSettingsitems, surfacedonly from the profile/account menu (top-right avatar) — a separate page
entirely from that Settings tree, at a different URL shape
(
/_settings/GlobalSettings/{tabId}vs. the per-user tree's own routing).Every other tab named alongside it in the source (
AddPrivacySettingsTab,AddInvitationsSettingsTab,AddTokenUsageSettingsTab, etc.) is also aGlobalSettingsitem, not a per-user Settings tab — so this isn't unique toAbout/What's New, but it means the "Settings" framing in both the PR description and
the code's own naming actively points a reader at the wrong navigation surface.
Worth either renaming for clarity or adding a visible link between the two pages.
sierragolflima commentedon Aug 18, 2026
Follow-up to my earlier comment on this issue: the routing defect described there is now
tracked properly as #1817, so it is findable outside a closed issue's comment thread.
Two things changed since that comment:
It spread. Show which build — and which instance — is serving the session #1791 (the top-bar build chip) added a third call site with the same
hardcoded
/_settings/…literal, so the About page is now unreachable from the chip aswell as from the two profile-menu entries. That is the reason it is worth its own issue —
it keeps propagating because the literal is repeated rather than derived from
GlobalSettingsNodeType.SettingsPath.This issue's original ask is no longer blocked by it. Show which build — and which instance — is serving the session #1791's chip reports the running
build (and the serving instance) persistently in the header, without navigating anywhere.
So "can a user verify the deployment is current?" — the question this issue was filed for —
is answered today, even though the About page it originally shipped on still 404s.
Nothing here asks to reopen #956; the fix it requested did ship (#985, #1006). Recording the
pointer so anyone arriving here from the About page follows it to the live defect.
rbuergi commentedon Oct 11, 2026
(re-posted 2026-10-11; originally by @rbuergi on 2026-08-09)
Assessment: mostly built — two named gaps
Checked
origin/main@c6607346e. It helps to split the request in two: "what build is this?" and "is that build current?". The first is fully shipped and visible to every user; the second exists but only for platform admins.Already shipped
Build identity is baked in at compile time.
Directory.Build.props→ targetAddCommitHashMetadatastamps the git SHA into every assembly asAssemblyMetadata("CommitHash"), sourced from the SDK'sSourceRevisionIdand falling back toGITHUB_SHA. It is deliberately kept offInformationalVersionbecause CI overwrites that with$(Version)+build.<ticks>, which drops the SDK's default+<sha>suffix.Versionitself is3.0.0-rc1.ci.$(GITHUB_RUN_NUMBER). So the raw material is in the image with no runtime plumbing needed.The About tab already surfaces it, ungated.
memex/Memex.Portal.Shared/Settings/AboutSettingsTab.cs, registered atmemex/Memex.Portal.Shared/MemexConfiguration.cs:915(.AddAboutSettingsTab()). It renders Version, Build commit (as a link to the exact GitHub commit viaShippedReleaseSeed.CommitUrl), Repository, Runtime, and the live installed-plugin inventory. There is no permission gate —GetTabreturns the definition unconditionally, unlikeUpdatePolicySettingsTab/InvitationsSettingsTab, which filter onAdminMenuGate.IsPlatformAdmin. Localization keys are present (src/MeshWeaver.Messaging.Hub/Localization/strings.en.json:196-209and:538).There is also a machine-readable copy.
ShippedReleaseSeed.EnsurePlatformVersionNodewrites the running version to theAdmin/PlatformVersionmesh node at startup. The native client already consumes it:memex/Memex.Client/Services/UpdateNotificationService.csreads a remote mesh'sAdmin/PlatformVersionand alerts when the remote is newer than the bundled build."Is it up to date" is answered — for admins.
memex/Memex.Portal.Shared/Settings/UpdatePolicySettingsTab.csshows Running version + Latest available tag + when last checked, plus an "apply now" button. Those two bookkeeping fields (UpdatePolicyContent.LatestAvailableTag/CheckedAt) are written by the ACR poller atmemex/Memex.Portal.Shared/SelfUpdate/SelfUpdateHostedService.cs:175.The actual gaps
UpdatePolicySettingsTab.GetTabgates onAdminMenuGate.IsPlatformAdmin(UpdatePolicySettingsTab.cs:45-48). A normal user gets About — what build is running — but no surface telling them whether that build is current. The issue asks for "users ... verify a deployment is up to date", and that half is admin-only./healthand/alive(memex/aspire/Memex.Portal.ServiceDefaults/ServiceDefaults.cs:111,114) carry no version, and there is no/api/version(greppedMapGet/MapPostacrosssrc/andmemex/— nothing). So verifying from outside still requires logging in.On the observation in the report
The About tab was in the deployed code. I checked
1af1aaa84directly:AddAboutSettingsTab()is present atMemexConfiguration.cs:891. So "the code wasn't in that image" does not explain a missing tab onci.1842.However, the deployment has rolled forward twice since the report was filed. Current state:
In ACR,
3.0.0-rc1.ci.2340,c660734andmainare the same manifest digest (sha256:7d532f06…), andc660734is currentorigin/mainHEAD.So: worth re-checking Settings → About on
memex.meshweaver.cloudbefore anyone chases a rendering bug. If the tab is there now, the original observation was against the older image and only the two gaps above remain. If it is still absent onci.2340, that is a separate live defect and deserves its own issue — the registration is unconditional, so an absent tab would mean something is interrupting hub configuration, not a missing feature.(One structural note on the report's method: the About tab is the thing that tells you the build, so its absence can never itself be read as evidence of staleness.)
Smallest honest implementation
Add the running-vs-latest line to the About tab, which is already ungated and already renders
ShippedReleaseSeed.InstalledPlatformVersion. The comparison values already exist onAdmin/UpdatePolicy(LatestAvailableTag+CheckedAt) — no new state, no new poller.The one design decision this forces:
Admin/UpdatePolicylives in the Admin partition, so a normal user most likely cannot read it. I did not verify a non-admin read against a live mesh, so treat that as the open question rather than settled. Two ways out:(b) is smaller and leaks less.
If an out-of-band check is also wanted, a
MapGet("/api/version")returning{version, commit}is a few lines and needs no new state — but that is a separate, additive decision, not required by the above.Recommendation
Keep open, but retitled around the real remainder rather than the original premise. Two named items:
/api/versionis wanted.Everything else this issue asks for — version, git commit, GitHub link, visible to every user — is on
maintoday.