Skip to content

shared-rules: dispose-to-serve-new-state required in all seven repos — step 3 of 3 - #4662

Merged
meshweaver-cloud[bot] merged 3 commits into
mainfrom
docs/dispose-to-serve-new-state-step3
Sep 18, 2026
Merged

meshweaver-cloud[bot] merged 3 commits into
mainfrom
docs/dispose-to-serve-new-state-step3

Conversation

@rbuergi

@rbuergi rbuergi commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Step 3 of 3 of the dispose-to-serve-new-state rollout (maintainer, 2026-09-17: "the grain keeps serving old state until we send dispose request" / "write this prominently in all repos" / "in pull request skill etc").

  • Step 1 — AGENTS.md + docs: the grain serves old state until a DisposeRequest — step 1 of 3 #4641 (merged): the block wrapped in core's AGENTS.md, the Architecture page Stale State Until a Recycle it points at, the five skills (pullrequest, deployment, release, mesh-data, debug), and the register entry with required-in naming only the hub — so no spoke marker was ever undeclared.
  • Step 2 — all merged: MeshWeaver.Plugins#2050, MeshWeaver.Education#351, Systemorph/Memex#409, MeshWeaver.Reinsurance#220, MeshWeaver.SocialMedia#205, MeshWeaver.Manufacturing#101. (MeshWeaver.Crm#127 carries the same text and is deliberately not registered — see below.)
  • This PR — widens required-in to all seven, so from here a repo that drops or drifts the block is red in core's shared-rules check.

Also carries a second commit: StaleStateUntilRecycle now names why the unforced re-adoption case is invisible (/health's content-types records a degradation only when a read degrades; bake-report reads the shared record, which said Ok) and points at #4647's per-type outcome census. Bundled deliberately rather than spending a separate CI run on a paragraph.

On the earlier red, now cleared

Four spokes were blocked on a publication-availability refusal, not on anything in their own diff: compile-check failed at "Add external modules to the reference set" before any NodeType compiled, with no sealed publication for source 'plugins' under framework identity sadada8c47… (the #3583 class). Core CD run 8872 sealed the publication; each spoke was then re-run as a whole run and each one's own resolver line was read before its result was trusted:

PR PINNED_SET identity compile-check
Crm#127 3.0.0-ci.8872 s02e28d5cd… success
Reinsurance#220 3.0.0-ci.8872 s02e28d5cd… success
SocialMedia#205 3.0.0-ci.8872 s02e28d5cd… success
Manufacturing#101 3.0.0-ci.8872 s02e28d5cd… success

Why Crm is not in the register

MeshWeaver.Crm is absent from the register's repos, so this gate never reads it and nothing here requires it. Registering it needs the read-only fleet-reader App installed there and Crm carrying the blocks already registered — an unreadable repo is a RED in this gate by design. It carries this block's text anyway, so a later registration is a one-line change rather than a rollout.

Verification

check-shared-rules.py --self-test 18/18, and --local across all seven repos read from their live default branches after the spokes landed: ✓ 6 spoke(s) match the hub for dispose-to-serve-new-state and for never-hand-roll-ui, ✅ All 5 shared rule block(s) are identical everywhere they are carried, across 7 repos. Documentation.Test Release -warnaserror 0 Error(s); full suite 562 passed / 0 failed / 0 skipped.

main is merged in so this cannot revert #4418's widening of never-hand-roll-ui; the combined register reads 7 for both blocks.

Pairs-with: none — the register and one doc paragraph; no public surface changes.

🤖 Generated with Claude Code

…— step 3 of 3

Maintainer directive, 2026-09-17: "the grain keeps serving old state until we send
dispose request" / "write this prominently in all repos" / "in pull request skill etc".

Step 1 was core#4641 — the block wrapped in core's AGENTS.md, the Architecture page
StaleStateUntilRecycle it points at, the five skills, and the register entry with
required-in naming only the hub, so no spoke marker was ever undeclared. Step 2 landed
the block verbatim in the six registered spokes. This widens required-in to all seven,
so from here a repo that drops or drifts the block is red in core's shared-rules check.

MeshWeaver.Crm carries the same text (Crm#127) and is deliberately NOT registered: it
is absent from the register's `repos`, so the gate never reads it, and registering it
needs the read-only fleet-reader App installed there AND Crm carrying the blocks
already registered — an unreadable repo is a RED in this gate by design.

Verified: check-shared-rules.py --self-test 18/18, and --local across all seven repos
with this widening green ("✓ 6 spoke(s) match the hub").

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 17, 2026 20:15

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.

🟡 Changes recommended

The manifest claims all step-2 spoke PRs landed, contradicting the PR’s stated status for three of them.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Widens enforcement of the dispose-to-serve-new-state shared rule from core to all seven registered repositories.

Changes:

  • Adds six spoke repositories to required-in.
  • Updates rollout metadata and documents Crm’s intentional exclusion.
File summaries
File Description
.github/shared-rules.json Registers all seven repositories for shared-rule validation.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 1
  • Review effort level: Lite

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

Comment thread .github/shared-rules.json
Comment on lines +207 to +209
"Landed: step 1 core#4641; step 2 Plugins#2050, Education#351, Reinsurance#220,",
"SocialMedia#205, Manufacturing#101, Memex#409; step 3 this entry's widening. Crm#127",
"carries the same text, unregistered — see the paragraph above.",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Valid catch, and the contradiction was real — but it resolves the other way round now: the manifest line is correct and the PR DESCRIPTION had gone stale.

When the description was written, Reinsurance#220, SocialMedia#205 and Manufacturing#101 were genuinely open and red. They were red on a publication-availability refusal that had nothing to do with their own diff (each is AGENTS.md and nothing else): compile-check failed at "Add external modules to the reference set" BEFORE any NodeType compiled, with no sealed publication for source (plugins) under framework identity sadada8c47… — the #3583 class. Core CD run 8872 sealed the publication; each spoke was then re-run as a whole run, and each ones own resolver line was read before its result was trusted (PINNED_SET 3.0.0-ci.8872, identity s02e28d5cd…, compile-check success). All six registered spokes plus Crm#127 are now merged, which I verified by reading the block out of each default branch rather than trusting the merges.

So the why block stands as written. I have rewritten the description to match: it now lists all six as merged, carries the per-spoke resolver table, and states why Crm is deliberately unregistered. Thanks — a stale rollout record in the one file that exists to explain the rollout is exactly the thing worth flagging.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

264 tests  ±0   264 ✅ ±0   2m 35s ⏱️ -6s
  1 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

429 tests  ±0   429 ✅ ±0   1m 0s ⏱️ -1s
  2 suites ±0     0 💤 ±0 
  2 files   ±0     0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

533 tests  ±0   533 ✅ ±0   1m 2s ⏱️ -3s
  1 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

    3 files  ±0      3 suites  ±0   5m 28s ⏱️ +25s
2 377 tests ±0  2 377 ✅ ±0  0 💤 ±0  0 ❌ ±0 
2 378 runs  ±0  2 378 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

1 497 tests  ±0   1 495 ✅ ±0   7m 37s ⏱️ -1s
    4 suites ±0       2 💤 ±0 
    4 files   ±0       0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    6 files  ±0      6 suites  ±0   11m 12s ⏱️ -14s
3 211 tests ±0  3 019 ✅ ±0  192 💤 ±0  0 ❌ ±0 
3 215 runs  ±0  3 023 ✅ ±0  192 💤 ±0  0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

   17 files  ±0     17 suites  ±0   28m 56s ⏱️ -2s
8 311 tests ±0  8 117 ✅ ±0  194 💤 ±0  0 ❌ ±0 
8 316 runs  ±0  8 122 ✅ ±0  194 💤 ±0  0 ❌ ±0 

Results for commit 5e3eba9. ± Comparison against base commit 0dadacc.

♻️ This comment has been updated with latest results.

…e census that ends it

Bundled onto the step-3 register change rather than spending its own CI run.

The maintainer supplied the measurement behind the "an UNFORCED trigger re-adopts
the same prebuilt bundle" clause, and it also answers why that case cost two hours:
NO INSTRUMENT REPORTS IT. On memex, 2026-09-17, Approvals/Desk was recompiled at
17:35 (v844 -> v846) by a pod of the OTHER generation while the deployment was split
across two images; it came out with the same MVID, still stamped the foreign
framework identity, and recorded buildProvenance: AdoptedVerified. Nobody ran the
recycle verb, so RequestedReleaseForce was never stamped — a boot-time compile
re-adopted a bundle, which is the unforced clause and not the forced one. (That also
confirms the clause as shipped is right: the forced path does skip adoption, #2818.)

Neither instrument a reader reaches for could say so. `/health`'s content-types
records a degradation only when a content read DEGRADES, and bake-report reads the
SHARED record, which said Ok. All that was left was a blank area and "No renderer is
registered for area …".

The page now says that, and points at the census built to answer the question the
other two cannot — "is there a NodeType this replica cannot SERVE?", per type, with
its denominator stated and with "no sweep has reported here" printed as its own
sentence rather than as a clean one (#4647).

Verified: Documentation.Test Release -warnaserror 0 Error(s); full suite 562 passed,
0 failed, 0 skipped (DocumentationLinkIntegrityTest included, which resolves the new
link).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rbuergi

rbuergi commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Second commit bundled in (deliberately, rather than spending a separate CI run on a paragraph): StaleStateUntilRecycle now names why the unforced re-adoption case is invisible, and points at the census that ends it.

The maintainer supplied the measurement behind this page's "an UNFORCED trigger re-adopts the same prebuilt bundle" clause. On memex, 2026-09-17, Approvals/Desk was recompiled at 17:35 (v844 → v846) by a pod of the other generation while the deployment was split across two images; it came out with the same MVID, still stamped the foreign framework identity, and recorded buildProvenance: AdoptedVerified. Nobody ran the recycle verb, so RequestedReleaseForce was never stamped — a boot-time compile re-adopted a bundle. That is the unforced clause, not the forced one, which also confirms the shipped wording is right: a forced release does skip adoption (#2818).

What made it cost two hours is that no instrument reports it. /health's content-types records a degradation only when a content read degrades; bake-report reads the shared record, which said Ok. What was left was a blank area and No renderer is registered for area …. The page now says so and points at #4647's per-type outcome census — the one that answers "is there a NodeType this replica cannot serve?", states its denominator, and prints "no sweep has reported here" as its own sentence rather than as a clean one.

Verified: Documentation.Test Release -warnaserror 0 Error(s); full suite 562 passed / 0 failed / 0 skipped, DocumentationLinkIntegrityTest included.

Still a draft for the same reason as before — the last three spokes (Reinsurance#220, SocialMedia#205, Manufacturing#101) are blocked on the seal, not on anything in their own diff.

🤖 Generated with Claude Code

@rbuergi
rbuergi marked this pull request as ready for review September 17, 2026 22:03
@meshweaver-cloud
meshweaver-cloud Bot added this pull request to the merge queue Sep 18, 2026
rbuergi added a commit that referenced this pull request Sep 18, 2026
…opped

Resolving the conflict with main replaced main's "NECESSARY AND NOT
SUFFICIENT" section with this branch's corrected one, and that section
carried a measurement this branch's does not have: #4652, the first use of
the re-run remedy, BLOCKED/FAILURE -> CLEAN/SUCCESS/isInMergeQueue within a
minute, with re-arming auto-merge proven not to clear it. Restored beside the
remedy it evidences, and a second instance (#4662, today) added.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merged via the queue into main with commit 229930b Sep 18, 2026
41 of 43 checks passed
@rbuergi
rbuergi deleted the docs/dispose-to-serve-new-state-step3 branch October 10, 2026 13:09
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