The proofreader role content was changed (STYLE SHEET block removed) without
bumping its catalog version, so clients never saw an update. Bump proofreader
2 -> 3, and add a content-hash guard so this can't happen silently again.
- index.json: proofreader version 2 -> 3
- scripts/check.mjs: new content-hash guard. A scripts/content-hashes.json lock
maps slug -> { version, hash } (sha256 over emoji/autoStart/name/description/
instructions/launchMessage across all languages). check.mjs now fails when a
role's content changed without bumping its version; the new --update-hashes
(alias --fix) refreshes the lock but refuses to write when a bump is missing.
- check.mjs: also require every index.json role to carry a finite numeric
version (matches the server's catalog validation), with defense-in-depth so a
missing version can't bypass the bump guard.
- scripts/content-hashes.json: new lock artifact (not part of the served catalog).
- README.md: document the guard, the lockfile, --update-hashes, and the
prune-then-readd limitation.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.1 KiB
JSON
32 lines
1.1 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"bundles": [
|
|
{
|
|
"id": "editorial",
|
|
"name": { "ru": "Редакторский набор", "en": "Editorial suite" },
|
|
"description": {
|
|
"ru": "Полный цикл редактуры статьи: структура, стиль, корректура, факты и нарратив.",
|
|
"en": "The full article-editing cycle: structure, style, copyediting, facts, and narrative."
|
|
},
|
|
"languages": ["ru", "en"],
|
|
"roles": [
|
|
{ "slug": "structural-editor", "version": 2 },
|
|
{ "slug": "line-editor", "version": 2 },
|
|
{ "slug": "fact-checker", "version": 2 },
|
|
{ "slug": "proofreader", "version": 3 },
|
|
{ "slug": "narrator", "version": 1 }
|
|
]
|
|
},
|
|
{
|
|
"id": "research",
|
|
"name": { "ru": "Исследование", "en": "Research" },
|
|
"description": {
|
|
"ru": "Глубокое исследование темы с подготовкой отчёта.",
|
|
"en": "Deep research on a topic with a prepared report."
|
|
},
|
|
"languages": ["ru", "en"],
|
|
"roles": [ { "slug": "researcher", "version": 1 } ]
|
|
}
|
|
]
|
|
}
|