Repository navigation
docs+ci: the clients/react guards left the repo two days ago — stop instructing people to use them - #2520
Merged
Conversation
…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>
Contributor
There was a problem hiding this comment.
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 thatLocalizationTestis now the only localization guard in this repo. - Simplify the
Clientsworkflow trigger paths to match the only remaining cross-tree input it actually consumes (src/MeshWeaver.Mesh.Contract/Protos/**forclients/pythonproto 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.
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 onlypython/andvoice-gateway/. All six guards that AGENTS.md andclients.ymlname are gone from this repo:Consequence 1 — AGENTS.md instructs a step that cannot be taken
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.
LocalizationTestis 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.ymldeclared cross-tree paths for exactly those deleted tests: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 issrc/MeshWeaver.Mesh.Contract/Protos/**(read byscripts/gen_proto.sh). The trigger is now that, plusclients/**and the workflow file.Recorded, because it will rot again
ciTrigger.test.tswas 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 inclients/pythonorclients/voice-gatewayknows 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.Test92/92 (link integrity + What's New guards), Release-warnaserror0 Error(s);clients.ymlparses to the same singlepython-sdkjob with three trigger paths.