Repository navigation
Six NodeTypes cannot compile on memex-cloud — the compile gate passed against the platform CI ships, the portal runs an older one #4314
Description
Six NodeTypes on memex.meshweaver.cloud stopped compiling at 2026-09-14T06:59:28Z, forty minutes after a satellite merge. The content is correct and the source-level compile gate ran and passed; the running platform image is simply older than the API the content calls. Nothing is broken in code — the remedy is a roll. What is missing is not a gate but a target: no gate compares the delivered source against the image the receiving instance runs.
What is failing
Every NodeType whose source set includes MeshWeaver.Plugins Store/Publishing/Source/RegistryPackages.cs:
CS0246 Error: The type or namespace name 'PlanTierRefusal' could not be found …
CS1061 Error: 'RegistryPackageSource' does not contain a definition for 'ListCatalog'
and no accessible extension method 'ListCatalog' …
Measured from Admin/_LogIncident/6fbefdb26bd2a200 (read on memex.systemorph.com), whose ten retained samples all fall between 06:59:28Z and 11:26:05Z today, across three pods:
| NodeType | samples |
|---|---|
Store/Plugin |
3 |
Store/Catalog |
2 |
Store/Enrollment |
1 |
Store/Provision |
1 |
Store/Maintenance |
1 |
Hosting/InstanceRequest |
1 |
🚨 Six is a FLOOR, not a count. samples[] is a bounded ring, ten deep against occurrences: 68. The failing replica's own /health bake-report read previouslybroken=11 at 2026-09-14T08:44:39Z.
Root cause — measured, not inferred
core PR #4102, commit 00fa2b69f9, merged 2026-09-12T17:28:05Z |
adds PlanTierRefusal (src/MeshWeaver.Mesh.Contract/Security/PlanTierRefusal.cs) and RegistryPackageSource.ListCatalog (src/MeshWeaver.PluginCatalog/RegistryPackageSource.cs:95) |
both portals serve 3.0.0+c84c6c05503228860df03c4a8b596e497e6d218c, commit dated 2026-09-12T09:30:22Z |
10 /api/version samples today — 6 on memex.meshweaver.cloud, 4 on memex.systemorph.com, all identical, so not one unlucky replica |
| the surface at the running commit | PlanTierRefusal.cs is a file 00fa2b69f9 added, and it is absent at c84c6c055 — read directly, not inferred from ancestry |
MeshWeaver.Plugins Store/Publishing/Source/RegistryPackages.cs, changed by dd9c96b4c8 (PR #1837), 2026-09-14T06:19:40Z ("fix(#1802): a declined package names the PLAN…") |
the in-mesh Code node now calls both symbols |
| first failing compile | 2026-09-14T06:59:28Z — forty minutes later |
🚨 What the CS1061 establishes, and what it does not. RegistryPackageSource resolved — the assembly is on the reference set — so the fault is in the platform assembly's surface, not in a source node that failed to land. That is what distinguishes this from #3485 / #4257 / Missing Declared Sources, which produce a bare CS0246 and have a completely different remedy. It does not by itself give the direction: a member removed in a newer platform, or an extension method out of scope, read identically. The direction here was confirmed on the surface, as the third row above records. Given that, no recompile can cure it — the reference set is the same on every attempt.
Remedy
Roll memex-cloud (and memex) to a sealed set containing 00fa2b69f9 — an InstanceAction on the control instance, i.e. a maintainer decision, not something I should do.
🚨 One roll covers two open items. 00fa2b69f9 is an ancestor of dbdaaacc3, so any set carrying the #4163 fix that #3432 has been waiting on since 2026-09-13 also carries this API. #3432's own comment names 3.0.0-ci.8484 (core 87805faaa) as the nearest such set; anything newer works too.
Why the gates were green, and why the sweep did not name it
Written up as Doc/Architecture/CompiledAgainstAnotherPlatform (PR #4313). In short:
- The source-level gate exists and it passed.
compile-check / Compile every NodeType (vs core)ondd9c96b4c8iscompleted/success(48 success, 11 skipped, 0 failures). It passed correctly: MeshWeaver.Plugins resolves the platform per run (scripts/resolve-platform.py— the newest SEALED set of core's main-cd), and that set carries fix(#4097): a module refused by plan tier says so on the instance — /health, the package card and the self-updater name the tier, not the consequence #4102. The Module Platform Link Gate is the one gate that measures against the platform actually running — and it measures bytes. So the gap is one of target, not coverage. - Roslyn ran because the prebuilt was declined.
PrebuiltAssemblySeederadopts the CI bake when the framework identity matches; the bake was produced against the newer platform, the identity did not matchc84c6c055, so the fallback compiled the new source against the old reference set.Modules:RequirePrebuilt(default OFF) would have made that decline a named install-time error — naming package, registry, framework identity and architecture — instead of a doomed compile. - The sweep is not the denominator.
search 'nodeType:NodeType content.compilationStatus:Error partitions:all' limit:200answered 8 at 12:43Z today, allHosting/*, naming none of the six — that is 8 of N ≥ 200 over M unknown (the companion count came backtruncated: true; the envelope carried nocoveragefield on this image). Two independent reasons, neither a bug in the sweep: it is RLS-filtered — noAgenticOffice/*rows for this identity, while the same deployment's system-side/healthcounts 594 instances of threeAgenticOfficetypes — andcompilationStatusis one shared field over a per-replica compile, so a replica still serving an adopted prebuilt leaves itOk.
What would close this class (options, not a decision)
- Wire the baseline arm onto the satellite's own PR.
node-repo-compile-check.ymlalready implements it:judge-against-baselinecompiles the content a second time againstbaseline-image-digest— "the PREVIOUS platform image (digest) — what the fleet runs today" — andcompat-verdict.pyclassifies each failure. It is wired into the platform's satellite-compat lane, which runs when core promotes; "a node repo checking its own PR leaves it false and keeps the plain gate." The content half is the one that lands first and reaches portals fastest, and it is the half with no baseline reading. - Turn on
Modules:RequirePrebuilton production portals. It does not close the window, but it converts a doomed fallback compile into a named refusal at install time. - Make the parked NodeType name the platform build it failed against.
NodeTypeDefinitionalready carriesCompiledFrameworkVersionandFailedBuildInputs(fw=<identity>), so the fact is recorded — as a hash, not as something a reader can compare to a commit without extra work. - Nothing — it clears on the next roll, and a gate on every install may cost more than the window. A legitimate answer, but it should be chosen rather than arrived at by never naming the failure mode.
All reads read-only (get / search / curl /api/version / curl /health) plus local repository history and the GitHub REST API. No mesh data was changed, and no instance was rolled or restarted.
🤖 Generated with Claude Code
Activity
[-]Six NodeTypes cannot compile on memex-cloud — in-mesh Store source calls two core APIs added after the running image (a roll, and no gate saw it)[/-][+]Six NodeTypes cannot compile on memex-cloud — the compile gate passed against the platform CI ships, the portal runs an older one[/+]rbuergi commentedon Sep 14, 2026
Verified, and the remedy is already the roll everyone is waiting on — set 3.0.0-ci.8581, not 8484
Confirmed the ancestry independently against
origin/main:PlanTierRefusalabsent atc84c6c055(what both portals serve)src/MeshWeaver.Mesh.Contract/Security/PlanTierRefusal.csdoes not exist at that commitf639c7130) carries #4102 (00fa2b69f9)dbdaaacc3— the #4163 fix that #3432 is blocked onSo one roll onto
3.0.0-ci.8581clears all of it, and 8484 is not the target to aim for: it is older than the seal that finally exists, and it carries none of today's delivery-freeze work.What that single roll delivers
CS0246 PlanTierRefusal/CS1061 ListCatalogsince 06:59:28Z;dbdaaacc3since 2026-09-13;compilationStatus:Error, plus the boot-install-lands-on-the-seal fix (fix(#4259): the boot default install lands on the sealed commit, never the branch tip #4292);The structural point worth keeping
MeshWeaver.Plugins#1837changed an in-mesh Code node to call symbols that exist in coremainbut not in the image the portal runs, and its compile-check gate passed correctly — the gate compiles against the newest sealed core set, not against the commit the portal is serving. That is theAGENTS.mdrule ("green CI does not mean the mesh compiles") in a form the rule does not yet spell out: the gap is not CI-vs-runtime, it is sealed-set-vs-rolled-image, and it opens every time a portal lags a seal. It stayed shut while the fleet rolled often; it has been open since 2026-09-12T12:34Z, the last image-moving action (Ops/Actions/helm-memex-ci8411-20260912).Not proposing a gate for it here — the honest remedy is that portals do not lag seals for two days. But it belongs on the record, because the next person will read the green compile-check and conclude the call was safe.
The roll is the maintainer's. No roll, restart or dispatch has been made from this session.
🤖 Generated with Claude Code
rbuergi commentedon Sep 14, 2026
User-visible impact, sampled 2026-09-14 13:1xZ
The consequence is not confined to a log line.
/health'scontent-typescensus — system-side, past RLS — names the types whose content a replica cannot type, "so their pages render empty". Four calls to memex.meshweaver.cloud (which land on four replicas you do not choose) returned, among others:Store/Catalog,Store/PluginandStore/Provisionare three of the six NodeTypes that cannot compile, so those instances render empty for whoever opens them — the Store pages on the public portal.🚨 Attribute only those three. The same samples also list
Store/Tier ×22,Store/Subscription ×1—2,Store/Install ×3andStore/Coupon ×1, which are not among the six failing types;content-typesdegrades for other reasons too (a declined or absent module bundle), and it records a degradation only when a read degrades, so it is neither a superset nor a subset of the compile failures. It is corroboration for the three it shares, not a count of the damage.Four
curl /healthreads, nothing else.rbuergi commentedon Sep 15, 2026
Still live on memex-cloud, 2026-09-15 04:5xZ — and the remedy has NOT been applied
Measured read-only, no InstanceAction written:
memex.meshweaver.cloud/api/version3.0.0+c84c6c05503228860df03c4a8b596e497e6d218c— the same 09-12 commit this issue names/healthcontent-typesnaming 8 node types whose content this replica cannot type, incl.Store/Plugin ×78(lastAgenticEngineering) andEdu/CourseInvite ×50sample-memex-cloud-20260913-3732(2026-09-13 18:57Z); everything since isLogs. No Roll, no Reconcile.So the platform skew this issue is about is unchanged on the public instance: core #4102 (
PlanTierRefusal,RegistryPackageSource.ListCatalog) merged 2026-09-12T17:28Z, the running commit is dated 09-12T09:30Z, and the in-mesh sources call both.For contrast, the control instance HAS been rolled —
memex.systemorph.comnow answersb8143398a7(set 3.0.0-ci.8612) after the 22:2xZ helm-lane deploy, and its/healthnames 6 rather than the previous count.🚨 Before rolling memex-cloud, note what the memex roll cost. The first attempt (
reconcile-memex-20260914-nav-rail, 20:13Z) never passed the bake gate:Store/CatalogPARKED onCS1061 'StoreTexts' does not contain a definition for 'ExploreCta'because that partition held a MIX of two Store commits — the defect now filed as #4355 (registry auto-update and the seal reconciler write one GitSynced partition with separate bookkeeping). memex-cloud is the registry itself and carries far more Store content, so a roll there can park the same way. #4355 has a fix in progress; rolling after it lands is the cheaper order.rbuergi commentedon Sep 15, 2026
Re-measured this on the live portal, and the picture is worse and far less stable than the filing records. Eight
/healthreads ofmemex.meshweaver.cloud, 2026-09-15 ~10:3xZ:content-typessaysEight calls, five distinct response bodies (by md5), counts spanning 8 to 34. The filing's "six" and "#4259's eight" are both inside that range — they were one replica's answer, not the portal's.
That sharpens what AGENTS.md already warns ("repeated calls sample DIFFERENT replicas … one call answers about ONE replica you did not choose"): the recorded instance was 10 calls → 2 disjoint bodies on 2026-09-11. It is now 8 calls → 5 bodies, so whatever is going on has become more uneven, not less.
The union across all eight samples: 46 distinct node types
Not a per-replica count — the set of types that at least one replica could not type. Heaviest by instance count:
Edu/CourseInvite,Edu/Quiz,Systemorph/Event,Store/Plugin(×72),Hosting/Deployment(×15).Spanning, among others:
Store/*(Catalog, Coupon, Install, Plugin, Provision, Subscription),Edu/*(AnswerSheet, CourseCatalog, CourseInvite, Quiz),Reinsurance/*,SST/*,SocialMedia/*(Post, PostsHub, Profile),Hosting/{Deployment,DeploymentStatus,Publication},Approvals/Desk,Signature/Desk,Claims/Claim.Every one of those renders its pages empty on whichever replica cannot type it — and a viewer hits a different replica per request.
Two things this changes
/healthread cannot state this issue's number. Any count quoted without saying how many calls produced it, and how many distinct bodies came back, is one replica's opinion. The honest form is the table above.Edu/CourseInviteis not a disposable-mesh artefact. I saw it degrade in MeshWeaver.Education's install shards this morning and recorded it there as a standing condition on that lane; it is degrading here, in production, at up to ×292. The two are the same defect, and the Education lane is simply a place it is visible.The per-replica instrument with no guesswork remains the Hosting API's
Sample(each pod's whole/healthbody); I have not run one — it is a write on the control instance and the fleet has had enough moving parts this morning.rbuergi commentedon Sep 15, 2026
Followed the degradation to its cause, and found a second thing on the way: the instrument that should have announced this reports
Healthy.bake-report, read on the same eight callsIdentical on every replica that printed it (4 of 8 — the other 4 omit the entry entirely, which per AGENTS.md is "the check is not registered in this host", not a clean reading).
Three facts in that one line:
c84c6c05(09-12).pending=58,frameworkstale=55— 58 of 353 node types are unbaked, and 55 of those are stale against the current framework identity. That is the supply side of the 46-type unioncontent-typesreports from the demand side: a type whose module was never baked for this framework cannot be typed when something reads it.Healthy.Why the third fact matters more than the first two
A health entry that reports
Healthywhile 58 of 353 types are pending and 55 are framework-stale cannot announce the condition it exists to measure. The degradation had to be discovered from the other entry (content-types), which only records a type once a read has already degraded — i.e. after a user has seen an empty page.So the ordering is exactly backwards from what the pair is for: the leading indicator says fine, the trailing indicator says 8–34 depending on which replica answers.
That is the same shape this repository has catalogued repeatedly (#4299's family): an answer that reads like a pass. It is worth deciding what
bake-reportshould say atpending=58 frameworkstale=55— my reading is that any non-zeroframeworkstaleon a replica serving traffic is at leastDegraded, because it is a promise that some page renders empty. But the threshold is a judgement, and this issue is where the evidence now sits.What still closes the underlying problem
The roll.
frameworkstale=55against a 09-12 bake is what a roll clears, and that is already the recorded remedy for #4314/#4259 — this comment does not change it. What it adds is that the roll's absence has been invisible to the fleet's own health check for three days, and that is separately fixable.rbuergi commentedon Sep 15, 2026
🚨 Correcting my own suggestion in the comment above, before anyone acts on it — it would take the fleet down.
I wrote: "any non-zero
frameworkstaleon a replica serving traffic is at leastDegraded." I then readNodeTypeBakeHealthCheckand that is wrong, in the direction that causes an outage rather than a reporting gap.What
bake-reportactually isIt is a readiness gate, not a census, and its own header says what its verdicts mean:
and, for a first deployment:
So
Healthyhere does not claim "the mesh is fully baked". It claims "this pod may take traffic".BakePhase.Complete => Healthy(state.Detail)is the sweep having finished; the counts ride in the detail string, deliberately, as payload rather than as verdict.Making
frameworkstale > 0non-Healthy would therefore hold every pod out of rotation on any portal with a single stale type — stalling rolls fleet-wide and black-holing first deployments. That converts today's invisible-but-serving condition into an unservable one. It is precisely the band-aid shape this repository bans, pointed the wrong way: I would have "fixed" the signal by breaking the thing it reports on.What the real gap is, restated
The gap is not that this check answers
Healthy. It is that nothing non-gating reportspending/frameworkstaleas a condition. The counts exist, on every replica, in a string — and the only consumer that turns them into a verdict is a gate that must not fail on them.So the fix, if one is wanted, is a separate entry (or an existing census-tagged one) that reads the same
NodeTypeBakeGateStateand reports staleness without touching rotation — the same split AGENTS.md already describes for the twocensus-tagged entries, which "print their reading whatever the status" precisely so that "I measured nothing" and "I measured, and it was clean" are different sentences.What stands from the earlier comment
Everything measured, none of the prescription:
/healthreads → five distinct bodies,content-typesspanning 8–34;AgenticOffice/Rechnung ×1404,SocialMedia/Post ×994,AgenticOffice/Buchungsjournal ×702,Edu/CourseInvite ×292;bake-reportidentical on the 4 replicas that print it: sweep of 2026-09-12,pending=58 frameworkstale=55;rbuergi commentedon Sep 16, 2026
{"body":"The six named types are no longer at
compilationStatus:Error— but this issue's thesis is right, and the per-replica data now shows it far better than the shared field could.\n\nSweep on memex.meshweaver.cloud, 2026-09-16:\n\n\nsearch 'nodeType:NodeType content.compilationStatus:Error partitions:all' limit:200\n -> count: 1, truncated: false (Essentials/Mailbox — unrelated to the Store/Publishing source set)\n\n\nSoCS0246 PlanTierRefusal/CS1061 ListCatalogdo not reproduce on the shared field. Do not read that as resolved — this issue said from the start that the content is correct and the running image is older than the API it calls, andcompilationStatusis one SHARED field over a compile every replica does at boot, so it cannot see a per-replica failure at all.\n\n## What the replica-named instrument shows now (#4218 landed, soSampleanswers)\n\nOps/Status/memex-cloudv1224 carries all 8 pods, and the count of node types a replica cannot TYPE tracks pod age, monotonically:\n\n| pod started | untypable types |\n|---|---|\n| 2026-09-12 12:49 | 32 |\n| 2026-09-13 08:06 | 18 |\n| 2026-09-13 21:50 | 7 |\n| 2026-09-14 22:28 | 7 |\n| 2026-09-16 00:06–00:18 | 2–6 |\n\nEvery pod runs the same tag (3.0.0-ci.8411), so this is not an image split — it is what each process loaded at ITS boot. The oldest says so outright:\n\n\npending_module_activation: Degraded — 20 module(s) are landed but not yet loaded in this\nprocess — a restart activates them: MeshWeaver.AI.Anthropic, MeshWeaver.AI.AppleIntelligence, …\n\n\nThat is this issue's mechanism confirmed from the other side: the delivered content moved, the process did not, and nothing compared the two. A restart converges the landed-but-unloaded half; the image gap (corec84c6c05, 2026-09-12) still needs the roll.\n\n## The ask is unchanged and still unbuilt\n\n> What is missing is not a gate but a target: no gate compares the delivered source against the image the receiving instance runs.\n\nStill true. Leaving open on that, not on the six types — and noting the sibling shape in #4348 (a satellite PR compiles against the set its main last PASSED), which is the same missing comparison one hop upstream."}rbuergi commentedon Sep 17, 2026
2026-09-17 — five days on: memex-cloud still runs the image this issue names, and the missing TARGET is still missing
Re-measured read-only today. Nothing rolled, nothing written.
The skew is unchanged on the public portal
c84c6c05is dated 2026-09-12T09:30:22Z — byte-for-byte the commit this issue was filed againston 09-14. Core
#4102(00fa2b69f9,PlanTierRefusal+RegistryPackageSource.ListCatalog) merged2026-09-12T17:28Z and is on
maintoday (src/MeshWeaver.Mesh.Contract/Security/PlanTierRefusal.cs,src/MeshWeaver.PluginCatalog/RegistryPackageSource.cs:95). So the recorded remedy — the roll — hasnot been applied in five days. For contrast the control instance has moved on: memex.systemorph.com
answers
3.0.0+afde4eab…(2026-09-15T21:50Z).The gate this issue asks for is still unbuilt
Systemorph/MeshWeaver.Plugins@mainstill resolves its compile target as the newest sealed coreset (
scripts/resolve-platform.py, jobplatform-refin.github/workflows/ci.yml) — never thecommit a receiving instance is serving. Core's shared
node-repo-compile-check.ymldoes carry ajudge-against-baselinearm (:133), but Plugins' compile-check is inline in its ownci.ymlanddoes not call it, and no arm anywhere compares delivered source against a running image. The body's
sentence therefore still holds verbatim:
What the failure looks like on memex-cloud today — same class, different symbols
The six types this issue named are not at
compilationStatus: Errorany more (as the 09-16 commentrecorded). What the shared field shows instead, 2026-09-17:
Hosting/Issuefails withCS0117 'IssueKinds' does not contain a definition for 'JobFailed',CS0103 'SafeUrl',CS1061 'IssueContent' does not contain a definition for 'Workload', atadoptedModuleVersion: 1.18.7againstcurrentModuleVersion: 1.22. Those are in-partitionsymbols, not platform API — so this particular set is the other skew (a partition holding two
package versions at once, #4355 / #4588), not the platform-vs-content one this issue is about. Kept
apart deliberately: same "nothing compiled the combination that is actually deployed" family, two
different denominators, two different remedies.
Standing, unchanged
Open on the missing target, not on any specific type. The roll remains the maintainer's, and the
per-replica reading (#4218's
Sample) remains the instrument that can see what the sharedcompilationStatusfield structurally cannot. Sibling shape one hop upstream: #4348.Read-only 2026-09-17: two
curl /api/versionreads, onesearchper portal, fresh shallow clones ofSystemorph/MeshWeaver@mainandSystemorph/MeshWeaver.Plugins@main. No mesh write, no roll.rbuergi commentedon Sep 19, 2026
Closing: the remedy this issue named has been applied, and the per-replica instrument says the symptom is gone
This issue said from the first line that nothing is broken in code — the remedy is a roll, onto a
sealed set containing
00fa2b69f9(#4102). That roll happened this morning. Measured read-only2026-09-19 ~18:5xZ; nothing was written, rolled or restarted.
The image moved, on both portals
/api/version3.0.0+c25f86ae85b7050f0fffa45d81444cc69cbb64d83.0.0+96f88406b419215a40b3aa97cd4c414ea7b3eb19Four
/api/versionsamples of memex.meshweaver.cloud, allc25f86ae— repeated calls land ondifferent replicas, so this is not one lucky pod.
Ops/Status/memex(sampled 18:53:11Z) agrees for thecontrol instance:
2/2 ready,generations: 1,converged: true, both replicas on3.0.0-ci.8968/96f88406, started 08:10:37Z and 08:11:39Z.Ancestry, the test this thread has used throughout:
So the single roll the 2026-09-14 13:12Z comment described — "one roll onto a set carrying both
00fa2b69f9anddbdaaacc3clears all of it" — has landed, five days later than hoped and onto amuch newer set than 8581.
The symptom, on the instrument this thread ended up trusting
Not the shared field. memex.meshweaver.cloud
/health,bake-report, sweep at 2026-09-19T08:40:11Z,framework
s573b826:content-typeson the same body names six types, and five of the six this issue named are gonefrom it: no
Store/Plugin, noStore/Provision, noStore/Enrollment, noStore/Maintenance, noHosting/InstanceRequest.The shared-field sweep agrees, cited only as agreement because this thread established it is the weaker
instrument:
0 of N over M = 124 readable partitions, with N a floor — the companion
search 'nodeType:NodeType partitions:all' limit:200came backtruncated: trueat 200, so N ≥ 200.Unlike the 2026-09-14 reading, the envelope now carries
coverage, so the denominator is stated ratherthan unknown.
What is left in
content-types, and why it is NOT this issueStore/Catalog ×13still appears — with a different reason string, and the same/healthbody namesthe cause:
That is the declined-generation root, not
CS0246 PlanTierRefusal/CS1061 ListCatalog— and, as thepayload itself says, a restart does not change it and neither does re-installing. Attributing it
here would be wrong in the same way this issue warned about on 2026-09-14 ("Attribute only those
three").
The class question is not closed by this, and is not lost
"No gate compares the delivered source against the image the receiving instance runs" is the durable
half of this filing, and its home is the committed page, not this thread —
Doc/Architecture/CompiledAgainstAnotherPlatform→ "What would close this class", carrying all four options including "Nothing" stated as a choice
rather than arrived at. One of them has moved since: option 3's spirit — make the unusable NodeType
visible per replica — shipped as the
/healthOUTCOME CENSUS (61ea9c7da908aab6cae1b16f60eefc5f8d801635,NodeTypeBakeReportRegistry), which is what produced the reading quoted above and is live on bothportals. #4632 tracks the remainder of that instrument.
Closing the incident: its measured subject was six-plus NodeTypes failing to compile on
memex-cloud because the running platform predated the API they call, and that condition no longer
holds on either portal.
All reads read-only:
curl /api/version×5,curl /health, two meshsearchcalls, onegetofOps/Status/memex, and localgit merge-base. No mesh node was written, noInstanceActionfiled, noinstance rolled or restarted.
rbuergi commentedon Sep 19, 2026
Addendum — a positive check on all six named types, because "0 at Error" has two causes and this
thread is the one that established that.
Asked the other way round, so a row coming back means the field was read and says
Ok, not that a row wasmissing:
compilationStatus: Ok?Store/PluginStore/CatalogStore/EnrollmentStore/MaintenanceStore/ProvisionHosting/InstanceRequestSix of six, each with its own version and a
lastModifiedfrom this morning's boot sweep. All theStore/*rows come back undercoverage.partitions: ["store"]and theHosting/*one under["hosting"], so the reads reached the partitions the types actually live in rather than being answeredfrom a fan-out that happened not to include them.
That is still the shared field, with the per-replica caveat this thread wrote down — but it is now a
positive reading of it for every named type, on top of the
/healthOUTCOME CENSUS ("every one of the300 type(s) that reached a verdict has a usable assembly on this replica") which is the per-replica one.
Both point the same way, and neither is the bare zero.