Files
gstack/modules/loadouts.schema.json
T
garrytanandcapy-ai[bot] a1c38753de feat(loadouts): Opus 5.5 lite loadout with explicit model detection (GSTA-161)
modules/loadouts.json gains the lite loadout (eleven coaching preamble
pieces dropped; upgrade-check and brain-sync kept) and a models map that
sends only claude-opus-5-5 (and its dated snapshots) to it. Detection is
explicit: Capy passes --model to the installer, Claude Code opts in with
./setup --loadout lite; anything unmapped, invalid or unreadable serves full.
The checkout always stays the full render.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-10-31 13:23:23 +00:00

171 lines
3.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "gstack module loadouts",
"description": "Rungs, the model-id to rung table, pinned module ids and named loadouts. Validated by scripts/modules.ts validateLoadouts (bin/gstack-modules validate, test/module-loadouts.test.ts).",
"type": "object",
"required": [
"version",
"aliases",
"rungs",
"pinned",
"loadouts",
"default"
],
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string"
},
"version": {
"const": 1
},
"note": {
"type": "string"
},
"aliases": {
"type": "object",
"additionalProperties": {
"enum": [
"frontier",
"strong",
"mid",
"light"
]
}
},
"rungs": {
"type": "object",
"additionalProperties": false,
"required": [
"frontier",
"strong",
"mid",
"light"
],
"properties": {
"frontier": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9.-]+\\*?$"
}
},
"strong": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9.-]+\\*?$"
}
},
"mid": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9.-]+\\*?$"
}
},
"light": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9.-]+\\*?$"
}
}
}
},
"pinned": {
"type": "array",
"items": {
"type": "string"
}
},
"loadouts": {
"type": "object",
"required": [
"full"
],
"propertyNames": {
"pattern": "^[a-z0-9-]+$"
},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"properties": {
"base": {
"type": "string"
},
"include": {
"oneOf": [
{
"const": "*"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"exclude": {
"type": "array",
"items": {
"type": "string"
}
},
"preamble_tier_max": {
"enum": [
1,
2,
3,
4
]
},
"note": {
"type": "string"
}
}
}
},
"models": {
"type": "object",
"description": "Exact model id (a dated -YYYYMMDD snapshot or -latest also matches) to loadout name. Checked before rungs; anything unmatched uses the rung default.",
"propertyNames": {
"pattern": "^[a-z0-9][a-z0-9._-]{0,79}$"
},
"additionalProperties": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
},
"default": {
"type": "object",
"additionalProperties": false,
"required": [
"frontier",
"strong",
"mid",
"light",
"unknown"
],
"properties": {
"frontier": {
"type": "string"
},
"strong": {
"type": "string"
},
"mid": {
"type": "string"
},
"light": {
"type": "string"
},
"unknown": {
"type": "string"
}
}
}
}
}