fix(mosaic): register canonical framework skills
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful

This commit is contained in:
wjarvis mos-comms
2026-07-19 22:10:06 -05:00
parent 3277faadec
commit fc1a86c471
3 changed files with 13 additions and 0 deletions

View File

@@ -35,6 +35,8 @@ CONTRIBUTING.md
defaults/**
examples/**
guides/**
# Shipped framework subtree — canonical skills are upgrade-reconciled.
skills/**
install.sh
install.ps1
LICENSE
@@ -67,6 +69,9 @@ policy/**
memory/**
sources/**
credentials/**
# Operator-authored/customized skills live separately from canonical skills/ and
# must remain structurally unprunable even as skills/** is framework-owned.
skills-local/**
# Secret-bearing operator file INSIDE the framework-owned tools/ subtree.
# Listed explicitly so the deny-wins rule carves it out of tools/**.
tools/_lib/credentials.json

View File

@@ -78,6 +78,7 @@ const PROBE_PATHS = [
'install.sh',
'framework-manifest.txt',
'guides/E2E-DELIVERY.md',
'skills/mosaic-context-refresh/SKILL.md',
'tools/git/pr-create.sh',
'tools/_lib/manifest.sh',
'defaults/SOUL.md',
@@ -97,6 +98,7 @@ const PROBE_PATHS = [
'memory/note.md',
'sources/skills/x.md',
'credentials/c.json',
'skills-local/custom/SKILL.md',
'tools/_lib/credentials.json',
'fleet/roster.yaml',
'fleet/roster.json',

View File

@@ -304,6 +304,11 @@ describe('manifest completeness against shipped framework tree', () => {
expect(misclassified).toEqual([]);
});
it('shipped canonical skills are framework-owned while local skills are operator-owned', () => {
expect(resolveOwnership(manifest, 'skills/mosaic-context-refresh/SKILL.md')).toBe('framework');
expect(resolveOwnership(manifest, 'skills-local/custom/SKILL.md')).toBe('operator');
});
it('the operator-owned surface from #791 resolves to operator', () => {
const operatorPaths = [
'agents/coder0.conf',
@@ -313,6 +318,7 @@ describe('manifest completeness against shipped framework tree', () => {
'SOUL.local.md',
'USER.local.md',
'STANDARDS.local.md',
'skills-local/custom/SKILL.md',
'tools/_lib/credentials.json',
'fleet/roster.yaml',
'fleet/roster.json',