Skip to content

Skills: fold the plugin repo's ahead-content into the master - #2413

Merged
rbuergi merged 12 commits into
mainfrom
fix/skill-master-merge
Aug 26, 2026
Merged

rbuergi merged 12 commits into
mainfrom
fix/skill-master-merge

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

The same nine skills exist in up to four places — core's content/ai/Skill (which the
platform image ships and every mesh actually serves), MeshWeaver.Plugins/Skill,
Essentials/Skill and Publish/Skill — and they have drifted in BOTH directions.
Measured 2026-08-26.

core is the master, decided on deployment reality rather than taste: the Skill
package has no _GitSync entry on memex and ships no compiled module, so its root is a
bare untyped node and its 17 skills have never reached any mesh. Core's copies are on
every instance with no install and no purchase, and they are NEWER on four skills
(/code +1261, /provider-keys +1297, /group +492, /space +271).

But the plugins repo is AHEAD on others, and that content is real work that has never
reached a single user. This folds it in, so the duplicates can be deleted without losing it:

  • /access +2,907 chars — 45 lines added, none removed.
  • /layout-area and /markdown +1,898 chars each — the same 30-line block:
    "🚨 WRITE INTO THE USER'S OWN HOME — never into the space you are reading". A safety rule
    someone wrote twice into the copies nobody serves.

Each merge asserts that every non-blank line of the core body survives in the result
before writing — these are pure additions, and a mechanical "take the longer one" would
otherwise silently drop a core-only paragraph.

🚨 /pull-request — this PR now DOES settle the governance question (changed mid-PR)

An earlier revision of this description said /pull-request was deliberately left alone
because its two copies encode contradictory policy rather than drift. That is no longer
what the diff does: commit 13dd9feca adopts the plugins copy's rule, and the description
above has been corrected to match. Reviewer: this is the one change here that is a policy
decision, not a reconciliation — please read it as such.

Core's copy said "You do NOT merge. Merging is the human's approval step" and "Never
auto-merge"
. It now says merge it yourself on green, and that --auto is acceptable.

The argument for adopting it is that core's old text contradicted this repo's own
AGENTS.md
, which states: "Finishing a change set means MERGED — merge it yourself on
green, don't ask for permission… A PR left open with a link handed back is unfinished work."

So the skill was instructing agents to do the opposite of the documented rule. The argument
against is that it widens what an agent does unsupervised, and by this PR's own measurement
core's content/ai/Skill is what every mesh serves — so it takes effect everywhere on the
next image, for every agent.

Both boundaries that actually gate risk are preserved: never merge a red or still-pending
PR, and never force-push over main.

Follow-up in MeshWeaver.Plugins deletes the 38 duplicate skills across Skill/,
Essentials/Skill/, Publish/Skill/, Collaboration/Skill/thread and
Hosting/Skill/ui-extensibility, and adds a one-skill-master gate mirroring
check_one_agent_master. That deletion must land AFTER this, or the ahead-content is lost.

CI status

AiContentPackDriftTest (shard 4) was this PR's own failure — the edited Skill/access.md
had moved off its pinned reconciliation point. Fixed in efbd1c608 and verified: the ledger
now re-hashes clean for all entries and the roster matches, and run 33012634396 reports
MeshWeaver.AI.Test Total: 833, Failed: 0.

The remaining red is not this diff: MeshWeaver.Content.Test.CommentDoneReactivityTest. EditingComment_DoneShowsEditedText_WithoutRefresh, a 20s reactive timeout belonging to the
rotating shard-4 cast tracked in #2346 (data point posted there). Evidence it is unrelated:
the previous run on this same branch (33008478553) already carried every one of these .md
edits and reported MeshWeaver.Content.Test Total: 224, Failed: 0 — the only delta since is
a hash re-pin in AiContentPackSync.json — and MeshWeaver.Content.Test references neither
MeshWeaver.AI nor content/ai/**, so no path exists from this diff to that test.

What's New

No entry: this reconciles duplicated skill copies and is otherwise a no-op for the served
content, with the single exception of the /pull-request policy change called out above —
which is flagged for the maintainer rather than shipped as a feature announcement. If that
change is kept, it warrants its own Category: Feature entry.

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

The same nine skills exist in up to four places — core's `content/ai/Skill` (which the
platform image ships and every mesh actually serves), `MeshWeaver.Plugins/Skill`,
`Essentials/Skill` and `Publish/Skill` — and they have drifted in BOTH directions.
Measured 2026-08-26.

**core is the master**, decided on deployment reality rather than taste: the `Skill`
package has no `_GitSync` entry on memex and ships no compiled module, so its root is a
bare untyped node and its 17 skills have never reached any mesh. Core's copies are on
every instance with no install and no purchase, and they are NEWER on four skills
(`/code` +1261, `/provider-keys` +1297, `/group` +492, `/space` +271).

But the plugins repo is AHEAD on others, and that content is real work that has never
reached a single user. This folds it in, so the duplicates can be deleted without losing it:

- **`/access`** +2,907 chars — 45 lines added, none removed.
- **`/layout-area`** and **`/markdown`** +1,898 chars each — the *same* 30-line block:
  "🚨 WRITE INTO THE USER'S OWN HOME — never into the space you are reading". A safety rule
  someone wrote twice into the copies nobody serves.

Each merge asserts that **every non-blank line of the core body survives** in the result
before writing — these are pure additions, and a mechanical "take the longer one" would
otherwise silently drop a core-only paragraph.

🚨 **`/pull-request` is deliberately NOT merged here.** Its two copies do not differ by
drift, they encode contradictory POLICY: core says *"You do NOT merge. Merging is the
human's approval step"* and *"Never auto-merge"*; the plugins copy removed all seventeen of
those lines in favour of merge-by-default. That is a governance decision for the maintainer,
not something to settle while reconciling files, so both copies are left exactly as they are.

Follow-up in MeshWeaver.Plugins deletes the 38 duplicate skills across `Skill/`,
`Essentials/Skill/`, `Publish/Skill/`, `Collaboration/Skill/thread` and
`Hosting/Skill/ui-extensibility`, and adds a one-skill-master gate mirroring
`check_one_agent_master`. That deletion must land AFTER this, or the ahead-content is lost.

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

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

This PR consolidates ahead-of-core Skill documentation content into the core content/ai/Skill copies (the ones actually shipped/served by platform instances), reducing drift and preserving guidance that currently only exists in non-served duplicate locations.

Changes:

  • Added a new “write into the user’s own home” safety section to the /markdown and /layout-area skills to prevent common access-denied outcomes when chats are opened from read-only pages/spaces.
  • Expanded the /access skill with stronger guidance about global admin scope and an “Audit” section describing how to verify effective access by inspecting grants/policies.

Reviewed changes

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

File Description
content/ai/Skill/markdown.md Adds a new top-of-doc safety rule to default creations into the signed-in user’s home namespace.
content/ai/Skill/layout-area.md Adds the same safety rule to layout-area authoring guidance (read anywhere; write only into user home by default).
content/ai/Skill/access.md Adds global-admin scope clarification and an audit workflow for checking access via grants/policy nodes.

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

Comment thread content/ai/Skill/access.md Resolved
@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    53 files  +   21      53 suites  +21   58m 14s ⏱️ + 12m 4s
11 338 tests +5 095  11 033 ✅ +4 799  305 💤 +296  0 ❌ ±0 
11 922 runs  +5 095  11 617 ✅ +4 799  305 💤 +296  0 ❌ ±0 

Results for commit efbd1c6. ± Comparison against base commit 08d82de.

♻️ This comment has been updated with latest results.

The branch predated the three fixes that unbroke main (3a6f9559, c01ed69,
ed96362), so its build failed on a CS0246 this diff cannot reach — it
changes three markdown files.
@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

    9 files      9 suites   4m 3s ⏱️
1 912 tests 1 910 ✅ 2 💤 0 ❌
2 493 runs  2 491 ✅ 2 💤 0 ❌

Results for commit efbd1c6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    9 files      9 suites   6m 50s ⏱️
1 610 tests 1 609 ✅ 1 💤 0 ❌
1 611 runs  1 610 ✅ 1 💤 0 ❌

Results for commit efbd1c6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

624 tests  ±0   620 ✅ ±0   15m 35s ⏱️ + 2m 13s
  7 suites ±0     4 💤 ±0 
  7 files   ±0     0 ❌ ±0 

Results for commit efbd1c6. ± Comparison against base commit 08d82de.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

2 900 tests  +2 252   2 797 ✅ +2 149   8m 11s ⏱️ + 1m 47s
    9 suites +    6     103 💤 +  103 
    9 files   +    6       0 ❌ ±    0 

Results for commit efbd1c6. ± Comparison against base commit 08d82de.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

2 037 tests  +1 708   1 844 ✅ +1 515   9m 15s ⏱️ + 3m 35s
    9 suites +    8     193 💤 +  193 
    9 files   +    8       0 ❌ ±    0 

Results for commit efbd1c6. ± Comparison against base commit 08d82de.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

2 257 tests  +1 135   2 255 ✅ +1 135   14m 17s ⏱️ + 5m 51s
   10 suites +    7       2 💤 ±    0 
   10 files   +    7       0 ❌ ±    0 

Results for commit efbd1c6. ± Comparison against base commit 08d82de.

♻️ This comment has been updated with latest results.

AiContentPackDriftTest.EveryFile_StillHashesToItsPinnedReconciliationPoint
failed, correctly: this PR edits content/ai/Skill/{access,layout-area,
markdown}.md and content/ai is a MIRROR of the MeshWeaver.Plugins pack, so
the guard requires a core edit to state what it did about the master rather
than letting the two copies drift apart again (issue #1627).

That is exactly what this PR does — it brings the mirror UP TO the pack,
whose copies were 1898–2907 characters ahead — so the reconciliation point
moves with it. Only the three files this PR touches are re-pinned; the other
33 ledger entries are untouched, which is the check that the re-pin is
describing this change and not papering over someone else's drift.

Guard green: 15/15, including the roster and the public/private
sanitisation assertions.
@rbuergi
rbuergi enabled auto-merge August 26, 2026 19:00
rbuergi and others added 6 commits August 26, 2026 21:02
The two copies of this skill instructed the exact opposite thing on the most
consequential step. The pack (the served master) says "You MERGE it — in
every repo — once the check SUITE is green and the review is addressed";
core's mirror said "You do NOT merge. Merging is the human's approval step"
and "Never auto-merge". Every plugin repo's AGENTS.md says the former, in a
section called "Ship it: merge by DEFAULT" — "asking 'shall I merge?' on a
green PR is not caution, it is an unfinished task handed back".

Settled in favour of merging, so the mirror adopts it. That is the same
direction as the rest of this PR: content/ai mirrors the pack, and this file
was the one I excluded from that merge because the disagreement was policy
rather than wording and had to be decided in the open first.

Section 5 goes from "STOP — hand the merge to the user" to "Merge it", and
carries the three things that make merging actually work rather than hang:
green means the SUITE concluded green (not that nothing has failed yet); a
BEHIND branch needs a hand trunk-merge under strict protection, because
auto-merge waits forever and nothing updates the branch for you; and a merge
ships nothing by itself — the DEPLOY is the separate, system-changing step,
and that is the one to check in about.

The narrow stop-list is stated positively so "merge by default" cannot be
read as "merge anything": fatal, system-changing or destructive. A flaky job
unrelated to your diff, a review finding you disagree with, and a merge that
needs a trunk merge are explicitly NOT reasons to stop.

Ledger re-pinned for this file only; drift guard green 15/15 including the
roster and the public/private sanitisation assertions.
`mcp get "@{partition}/{Node}/_Access/*"` cannot work: `get` is a POINT read, and a query
with `path:X` and no `scope:` is QueryScope.Exact — "the node AT X" (NodeSetQuery) — so `*`
is not a path it can resolve. An agent following the skill would get nothing and conclude
the node carries no grants. It is also the shape AGENTS.md calls a defect outright: an exact
read of a node that does not exist answers an authoritative NotFound that terminates the
stream AND opens MeshNodeStreamCache's storm-breaker on that path, which fast-fails writes
too. Listing children is the documented way to ask "what is under here".

Kept as-is, against the review: the `path:… scope:subtree …` search above. `scope:subtree`
is valid — NodeSetQuery parses `"subtree" or "selfanddescendants"` — and `path:`/`scope:`
is the query syntax AGENTS.md itself uses. The suggestion to rewrite it to
`--basePath` form would have changed working instructions for no gain, so only the line
that genuinely fails when followed is changed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The drift guard failed on Skill/access.md — correctly. bc9caa0 ("The
node-scoped audit uses a search, not a wildcard get") edited that file on
this branch, and editing a mirrored file invalidates its reconciliation
point by construction; the ledger has to move with it.

Only that one entry changes. The roster is verified clean in both
directions — no file on disk missing from the ledger, no ledger entry
without a file — so this re-pin describes exactly that commit's change and
is not papering over anything else.

Guard green 15/15, including the roster and the public/private
sanitisation assertions.
@rbuergi

rbuergi commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

Heads-up: another session is working in this branch

bc9caa03a — "The node-scoped audit uses a search, not a wildcard get" — was pushed to fix/skill-master-merge and edits content/ai/Skill/access.md. It is not mine.

That is what turned the drift guard red, twice. main has not touched access.md in 11 days; this branch has, and one of those edits came from elsewhere. Editing a mirrored file invalidates its reconciliation point by construction, so the ledger has to move with it.

I have re-pinned only that one entry, on top of that commit — not instead of it. Verified before pushing:

  • bc9caa03a is an ancestor of my HEAD, so I am building on it;
  • my diff against it for access.md is empty, so I have not altered their content;
  • the roster is clean in both directions — no file on disk missing from the ledger, no ledger entry without a file — so the re-pin describes exactly their change and nothing else.

Guard green 15/15, including the roster and the public/private sanitisation assertions.

⚠️ Auto-merge is armed on this PR. If you are still working in this branch, disarm it or say so — I did not want to land someone else's in-flight commit on their behalf, and a merge now would mean any further work needs a follow-up PR.

@rbuergi
rbuergi merged commit 2fe6590 into main Aug 26, 2026
40 of 42 checks passed
@rbuergi
rbuergi deleted the fix/skill-master-merge 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