114 lines
3.4 KiB
JSON
114 lines
3.4 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://git.dcserve.ru/SILVER/NDC_xgrids-k1-connector/schemas/session-manifest.schema.json",
|
|
"title": "K1 laboratory session manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"schema_version",
|
|
"session_id",
|
|
"experiment",
|
|
"tool",
|
|
"host",
|
|
"device",
|
|
"network",
|
|
"timeline",
|
|
"artifacts",
|
|
"decision"
|
|
],
|
|
"properties": {
|
|
"schema_version": { "const": 1 },
|
|
"session_id": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]{8}T[0-9]{6}Z_[a-z0-9_-]+$"
|
|
},
|
|
"experiment": { "type": "string", "minLength": 1 },
|
|
"tool": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["version", "git_commit"],
|
|
"properties": {
|
|
"version": { "type": "string" },
|
|
"git_commit": { "type": "string" }
|
|
}
|
|
},
|
|
"host": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["macos_version", "machine", "python_version"],
|
|
"properties": {
|
|
"macos_version": { "type": "string" },
|
|
"machine": { "type": "string" },
|
|
"python_version": { "type": "string" },
|
|
"wifi_interface": { "type": ["string", "null"] },
|
|
"vpn_active": { "type": "boolean" }
|
|
}
|
|
},
|
|
"device": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["model", "activation_state", "firmware"],
|
|
"properties": {
|
|
"model": { "type": "string" },
|
|
"serial_suffix": { "type": ["string", "null"], "maxLength": 8 },
|
|
"activation_state": {
|
|
"enum": ["unknown", "active", "activation_lock", "fault"]
|
|
},
|
|
"firmware": { "type": ["string", "null"] }
|
|
}
|
|
},
|
|
"network": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["topology", "k1_address_redacted"],
|
|
"properties": {
|
|
"topology": {
|
|
"enum": ["unknown", "current_lan", "device_ap", "direct"]
|
|
},
|
|
"k1_address_redacted": { "type": ["string", "null"] }
|
|
}
|
|
},
|
|
"timeline": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["event", "monotonic_seconds"],
|
|
"properties": {
|
|
"event": { "type": "string", "minLength": 1 },
|
|
"monotonic_seconds": { "type": "number", "minimum": 0 },
|
|
"utc": { "type": ["string", "null"], "format": "date-time" },
|
|
"note": { "type": ["string", "null"] }
|
|
}
|
|
}
|
|
},
|
|
"artifacts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["path", "size_bytes", "sha256", "classification"],
|
|
"properties": {
|
|
"path": { "type": "string", "minLength": 1 },
|
|
"size_bytes": { "type": "integer", "minimum": 0 },
|
|
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
"classification": {
|
|
"enum": ["public", "redacted", "sensitive", "secret"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"decision": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["status", "gate", "reason"],
|
|
"properties": {
|
|
"status": { "enum": ["GO", "PAUSE", "BLOCKED"] },
|
|
"gate": { "type": "string", "minLength": 1 },
|
|
"reason": { "type": "string", "minLength": 1 },
|
|
"next_smallest_experiment": { "type": ["string", "null"] }
|
|
}
|
|
}
|
|
}
|
|
}
|