Skip to content

docs+ci: the clients/react guards left the repo two days ago — stop instructing people to use them - #2520

Merged
rbuergi merged 2 commits into
mainfrom
docs/stale-clients-react-references
Aug 27, 2026
Merged

rbuergi merged 2 commits into
mainfrom
docs/stale-clients-react-references

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Found because I had been repeating the instruction to agents all session, and one of them checked.

What is stale

044a85618 ("The GUI leaves the platform: the view packs and the web clients", 2026-08-25) moved the web clients to MeshWeaver.Plugins. clients/ now holds only python/ and voice-gateway/. All six guards that AGENTS.md and clients.yml name are gone from this repo:

clients/react/src/i18n/localize.test.ts      clients/grpc-web/src/wireContract.test.ts
clients/react/src/render/parity.test.ts      clients/grpc-web/src/restContract.test.ts
clients/react/src/ciTrigger.test.ts          clients/portal-next/e2e

Consequence 1 — AGENTS.md instructs a step that cannot be taken

🚨 A new key has a SECOND home: mirror it into clients/react/src/i18n/. … Add a key server-side only and the Clients workflow goes red with an off-by-your-delta key count (899 vs 905)

That directory does not exist, and no workflow will go red. A reader either hunts for a missing tree or believes a guard is watching them that is not — and the file gives them no way to tell a stale rule from a rule they have failed to follow. LocalizationTest is now the only localization guard; the text now says so, and says not to recreate a mirror here.

Consequence 2 — the workflow triggers on nine paths it can no longer check

clients.yml declared cross-tree paths for exactly those deleted tests:

-      - "src/MeshWeaver.Messaging.Hub/Localization/**"
-      - "src/MeshWeaver.Messaging.Contract/Localization/Locales.cs"
-      - "src/MeshWeaver.Blazor.Views/ViewsExtensions.cs"
-      - "src/MeshWeaver.Mesh.Contract/CreateNodeRequest.cs"
-      - "src/MeshWeaver.Mesh.Contract/MeshNode.cs"
-      - "src/MeshWeaver.Mesh.Contract/MeshNodeReference.cs"
-      - "src/MeshWeaver.Data.Contract/Messages.cs"
-      - "src/MeshWeaver.Data.Contract/PatchDataRequest.cs"
-      - "memex/Memex.Portal.Shared/Api/MeshApiEndpoints.cs"
-      - "memex/Memex.Portal.Monolith/**"

Every server-side edit to one of those contracts spun a workflow whose client-side check had already left — a trigger that fires reliably and verifies nothing, which is indistinguishable from coverage unless you go looking.

One job survives (python-sdk), and its only real cross-tree input is src/MeshWeaver.Mesh.Contract/Protos/** (read by scripts/gen_proto.sh). The trigger is now that, plus clients/** and the workflow file.

Recorded, because it will rot again

ciTrigger.test.ts was the guard that kept that inventory honest — it failed when a client test grew a cross-tree read the trigger did not cover. It went with the move, so the list is now maintained by hand. That is stated in the file so the next person adding a cross-tree read in clients/python or clients/voice-gateway knows to add the path themselves.

Why corrected in place rather than deleted

An instruction pointing at a deleted directory is the "prose asserts a guard that does not exist" failure this repo has been bitten by repeatedly — most recently a CD contract naming a "Hosting fleet registry" with no node type, reader or writer anywhere, which sent two investigations to a dead end. Saying what happened is worth more than a silent removal.

Verification

MeshWeaver.Documentation.Test 92/92 (link integrity + What's New guards), Release -warnaserror 0 Error(s); clients.yml parses to the same single python-sdk job with three trigger paths.

…nstructing people to use them

`044a85618` ("The GUI leaves the platform: the view packs and the web clients",
2026-08-25) moved the web clients to MeshWeaver.Plugins. `clients/` now holds
only `python/` and `voice-gateway/`. Every guard that AGENTS.md and this
workflow named is gone from this repo:

  clients/react/src/i18n/localize.test.ts     clients/grpc-web/src/wireContract.test.ts
  clients/react/src/render/parity.test.ts     clients/grpc-web/src/restContract.test.ts
  clients/react/src/ciTrigger.test.ts         clients/portal-next/e2e

Two live consequences, both of which read as coverage from outside.

AGENTS.md instructed every contributor to mirror each new localization key into
`clients/react/src/i18n/` and warned that the Clients workflow would go red on a
key-count delta. That directory does not exist. A reader following it either
hunts for a missing tree or believes a guard is watching them that is not — and
the file cannot distinguish a stale rule from a rule they have failed to follow.
`LocalizationTest` is now the only localization guard, and the text says so.

`clients.yml` still declared nine cross-tree `src/**` and `memex/**` trigger
paths for those same deleted tests. Every server-side edit to a contract spun a
workflow whose client-side check had already left. One job survives
(`python-sdk`), and its only genuine cross-tree input is
`src/MeshWeaver.Mesh.Contract/Protos/**`, which `scripts/gen_proto.sh` reads.
Trigger reduced to that plus `clients/**` and the workflow itself.

Also recorded, because it will rot again: `ciTrigger.test.ts` was the guard that
kept that list honest by failing when a client test grew a cross-tree read the
trigger did not cover. It went with the move, so the list is now maintained by
hand.

Both stale texts are corrected in place rather than deleted — an instruction
pointing at a deleted directory is the "prose asserts a guard that does not
exist" failure AGENTS.md warns about elsewhere, and saying what happened is
worth more than a silent removal.

Documentation.Test 92/92; the workflow parses to the same single job.

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

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.

Pull request overview

Updates repository guidance and CI to reflect that the React/grpc-web/portal-next client guards have moved out of this repo (to MeshWeaver.Plugins), preventing stale instructions and no-op workflow triggers that can look like coverage.

Changes:

  • Remove/replace the stale AGENTS.md instruction about mirroring localization keys into clients/react/src/i18n/, clarifying that LocalizationTest is now the only localization guard in this repo.
  • Simplify the Clients workflow trigger paths to match the only remaining cross-tree input it actually consumes (src/MeshWeaver.Mesh.Contract/Protos/** for clients/python proto generation), and document why the old inventory is now obsolete.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
AGENTS.md Updates localization guidance to remove references to client-side mirrors/guards that have left the repo.
.github/workflows/clients.yml Prunes stale cross-tree trigger paths and updates workflow documentation to reflect the post-move reality.

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

Comment thread .github/workflows/clients.yml Outdated
@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

1 080 tests  ±0   1 080 ✅ ±0   14m 3s ⏱️ - 1m 24s
    7 suites ±0       0 💤 ±0 
    7 files   ±0       0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

    8 files  ±0      8 suites  ±0   10m 56s ⏱️ -43s
4 408 tests +1  4 405 ✅ +1  3 💤 ±0  0 ❌ ±0 
5 006 runs  +2  5 003 ✅ +2  3 💤 ±0  0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

1 087 tests  ±0   895 ✅ ±0   5m 25s ⏱️ +29s
    6 suites ±0   192 💤 ±0 
    6 files   ±0     0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

1 308 tests  ±0   1 308 ✅ ±0   6m 5s ⏱️ -12s
    6 suites ±0       0 💤 ±0 
    6 files   ±0       0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

1 591 tests  +2   1 590 ✅ +2   9m 57s ⏱️ ±0s
    9 suites ±0       1 💤 ±0 
    9 files   ±0       0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

739 tests  ±0   735 ✅ ±0   7m 11s ⏱️ -12s
  8 suites ±0     4 💤 ±0 
  8 files   ±0     0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    44 files  ±0      44 suites  ±0   53m 39s ⏱️ - 2m 1s
10 211 tests +3  10 011 ✅ +3  200 💤 ±0  0 ❌ ±0 
10 811 runs  +4  10 611 ✅ +4  200 💤 ±0  0 ❌ ±0 

Results for commit d5056f7. ± Comparison against base commit 4f8e70e.

♻️ This comment has been updated with latest results.

The comment told readers to add a cross-tree path for `clients/python` OR
`clients/voice-gateway`. This workflow runs `python-sdk` and nothing else, so a
voice-gateway path would trigger a run that does not test voice-gateway — green
having verified nothing about the thing that changed.

That is the exact state the surrounding comment block exists to record, so the
invitation would have reintroduced it one line below the warning against it.

Now says plainly that voice-gateway has no job here, and that if it needs CI it
needs a job first and its inputs listed second.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rbuergi
rbuergi merged commit 96a022b into main Aug 27, 2026
24 checks passed
@rbuergi
rbuergi deleted the docs/stale-clients-react-references branch August 28, 2026 08:56
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