catalog-schema: add CatalogLifecycle + reproducibility.seed_field

Resolves the stale-schema gap asset-engine-dev flagged (the published
schema rejected the lifecycle field 12/14 live services already use) and
adds reproducibility.seed_field so a seedable engine can declare which
response key carries the seed used. Authoritative regen path remains
dump_schema.py against asset_engine/catalog.py; reconcile there.
This commit is contained in:
vh
2026-05-31 13:59:10 -07:00
parent 81efa8da96
commit b7b2130784
+57
View File
@@ -273,6 +273,40 @@
"title": "CatalogLatency",
"type": "object"
},
"CatalogLifecycle": {
"additionalProperties": false,
"description": "Per-service orchestration metadata.\n\nPresence means \"asset_engine can start/stop this service from the UI\".\nAbsence (default) means \"managed externally \u2014 UI surfaces no controls.\"\nSee docs/contracts/orchestration.contract.md.\n\n - stack: directory name under /opt/docker/compose/ on the\n inference host (compose path derived).\n - vram_gb: VRAM the model needs at typical operating params.\n Used by the memory gate before docker compose up.\n - gpu_device_id: 0 or 1 to pin to a specific card, None if the\n service uses both GPUs / picks dynamically. None\n means the gate must clear on each device.",
"properties": {
"stack": {
"minLength": 1,
"title": "Stack",
"type": "string"
},
"vram_gb": {
"exclusiveMinimum": 0,
"title": "Vram Gb",
"type": "number"
},
"gpu_device_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Gpu Device Id"
}
},
"required": [
"stack",
"vram_gb"
],
"title": "CatalogLifecycle",
"type": "object"
},
"CatalogModel": {
"additionalProperties": false,
"properties": {
@@ -333,6 +367,18 @@
],
"default": null,
"title": "Notes"
},
"seed_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Seed Field"
}
},
"required": [
@@ -571,6 +617,17 @@
],
"default": null
},
"lifecycle": {
"anyOf": [
{
"$ref": "#/$defs/CatalogLifecycle"
},
{
"type": "null"
}
],
"default": null
},
"license": {
"title": "License",
"type": "string"