railiance-platform/schemas/catalog-lane-scaffold.schema.json
codex f5b7ff5118
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Implement offline catalog lane scaffold generation
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a10391-6355-7b41-b0fa-3e14e874f091
2026-10-04 02:24:40 +02:00

344 lines
8.3 KiB
JSON

{
"type": "object",
"additionalProperties": false,
"properties": {
"schema_version": {
"const": 1
},
"lane_id": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"ccr_id": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^CCR-[0-9]{4}-[0-9]{4}$"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"date": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
},
"consumer_repo": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"owner_repo": {
"const": "railiance-platform"
},
"requester": {
"type": "object",
"additionalProperties": false,
"properties": {
"agent": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"agent",
"reason"
]
},
"review_approvers": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
}
},
"target": {
"type": "object",
"additionalProperties": false,
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"tenant": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"workload": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"environment": {
"enum": [
"build",
"development",
"test",
"staging",
"production"
]
},
"purpose": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": [
"domain",
"tenant",
"workload",
"environment",
"purpose"
]
},
"openbao": {
"type": "object",
"additionalProperties": false,
"properties": {
"mount": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"kv_path": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9][a-z0-9_-]*(?:/[a-z0-9][a-z0-9_-]*)+$"
},
"fields": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[A-Z][A-Z0-9_]*$"
}
},
"policy_name": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^workload-kv-read-[a-z0-9-]+$"
},
"auth": {
"type": "object",
"additionalProperties": false,
"properties": {
"mount": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"role": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"audience": {
"const": "openbao"
},
"service_account_names": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
}
},
"service_account_namespaces": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
}
},
"ttl": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[1-9][0-9]*[smh]$"
}
},
"required": [
"mount",
"role",
"audience",
"service_account_names",
"service_account_namespaces",
"ttl"
]
}
},
"required": [
"mount",
"kv_path",
"fields",
"policy_name",
"auth"
]
},
"eso": {
"type": "object",
"additionalProperties": false,
"properties": {
"store_name": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"server": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^https?://[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?(?::[0-9]+)?$"
},
"namespace": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"external_secret_name": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"secret_name": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
},
"refresh_interval": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[1-9][0-9]*[smh]$"
},
"data": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"secret_key": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[a-zA-Z0-9._-]+$"
},
"property": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[A-Z][A-Z0-9_]*$"
}
},
"required": [
"secret_key",
"property"
]
}
}
},
"required": [
"store_name",
"server",
"namespace",
"external_secret_name",
"secret_name",
"refresh_interval",
"data"
]
},
"risk": {
"type": "object",
"additionalProperties": false,
"properties": {
"classification": {
"enum": [
"standard",
"high"
]
},
"notes": {
"type": "array",
"minItems": 1,
"maxItems": 32,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 512
}
}
},
"required": [
"classification",
"notes"
]
}
},
"required": [
"schema_version",
"lane_id",
"ccr_id",
"title",
"date",
"consumer_repo",
"owner_repo",
"requester",
"review_approvers",
"target",
"openbao",
"eso",
"risk"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Draft exact KV-v2 workload-read lane input v1"
}