Files
HiveGrid-Wireframes/hivegrid-cloud/docs/feature-manifests/schema.json
T

293 lines
7.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://toolctrl.local/docs/feature-manifests/schema.json",
"title": "ToolCTRL Feature Manifest",
"type": "object",
"additionalProperties": false,
"required": [
"schemaVersion",
"id",
"title",
"classification",
"status",
"owner",
"description",
"rationale",
"codeAreas",
"dependencies",
"consumers",
"integration",
"boundaries",
"pruning",
"validation"
],
"properties": {
"schemaVersion": {
"type": "string",
"const": "1.0"
},
"id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]*$"
},
"title": {
"type": "string",
"minLength": 1
},
"classification": {
"type": "string",
"enum": ["core", "plugin-candidate", "remove-candidate", "mixed"]
},
"status": {
"type": "string",
"enum": ["active", "proposed", "review-needed"]
},
"owner": {
"type": "string",
"description": "Planning owner or broad ownership area, not a code owner assignment."
},
"description": {
"type": "string"
},
"rationale": {
"type": "array",
"items": {
"type": "string"
}
},
"codeAreas": {
"type": "array",
"description": "Likely source locations. Paths may be globs or package/module names.",
"items": {
"type": "string"
}
},
"dependencies": {
"type": "array",
"description": "Feature manifest IDs this feature needs to function.",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]*$"
}
},
"consumers": {
"type": "array",
"description": "Feature manifest IDs or feature surfaces that depend on this one.",
"items": {
"type": "string"
}
},
"components": {
"type": "array",
"description": "Optional list for bundle manifests such as plugin or removal candidates.",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["id", "title", "rationale", "codeAreas"],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]*$"
},
"title": {
"type": "string"
},
"rationale": {
"type": "string"
},
"codeAreas": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "string"
}
}
}
},
"integration": {
"type": "object",
"additionalProperties": false,
"required": [
"ownership",
"surfaces",
"configuration",
"workers",
"externalProviders",
"permissions",
"auditEvents",
"billingImpacts",
"uat"
],
"properties": {
"ownership": {
"type": "string",
"enum": ["tenant-owned", "admin-managed", "hybrid", "system-only"]
},
"surfaces": {
"type": "object",
"additionalProperties": false,
"required": ["adminRoutes", "tenantRoutes", "publicRoutes", "apiRoutes"],
"properties": {
"adminRoutes": {
"type": "array",
"items": { "type": "string" }
},
"tenantRoutes": {
"type": "array",
"items": { "type": "string" }
},
"publicRoutes": {
"type": "array",
"items": { "type": "string" }
},
"apiRoutes": {
"type": "array",
"items": { "type": "string" }
}
}
},
"configuration": {
"type": "object",
"additionalProperties": false,
"required": ["admin", "tenant", "environment", "secrets"],
"properties": {
"admin": {
"type": "array",
"description": "Admin-owned settings, provider credentials, policy, and defaults.",
"items": { "type": "string" }
},
"tenant": {
"type": "array",
"description": "Tenant-owned settings visible or editable in tenant surfaces.",
"items": { "type": "string" }
},
"environment": {
"type": "array",
"description": "Required environment variables or deployment configuration.",
"items": { "type": "string" }
},
"secrets": {
"type": "array",
"description": "Secret values and where they are owned. Do not store secret values here.",
"items": { "type": "string" }
}
}
},
"workers": {
"type": "object",
"additionalProperties": false,
"required": ["required", "queues", "jobs", "notes"],
"properties": {
"required": { "type": "boolean" },
"queues": {
"type": "array",
"items": { "type": "string" }
},
"jobs": {
"type": "array",
"items": { "type": "string" }
},
"notes": {
"type": "array",
"items": { "type": "string" }
}
}
},
"externalProviders": {
"type": "array",
"items": { "type": "string" }
},
"permissions": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][A-Za-z0-9]*(\\.(?:[A-Za-z][A-Za-z0-9]*|\\*))+$"
}
},
"auditEvents": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
}
},
"billingImpacts": {
"type": "array",
"items": { "type": "string" }
},
"uat": {
"type": "array",
"description": "Operator-verifiable acceptance checks for planning and implementation.",
"items": { "type": "string" }
}
}
},
"boundaries": {
"type": "object",
"additionalProperties": false,
"required": ["mustKeep", "mayMoveToPlugin", "mustNotTouch"],
"properties": {
"mustKeep": {
"type": "array",
"items": {
"type": "string"
}
},
"mayMoveToPlugin": {
"type": "array",
"items": {
"type": "string"
}
},
"mustNotTouch": {
"type": "array",
"description": "Areas excluded from the current phase or known to be owned by parallel work.",
"items": {
"type": "string"
}
}
}
},
"pruning": {
"type": "object",
"additionalProperties": false,
"required": ["phase", "action", "notes"],
"properties": {
"phase": {
"type": "string"
},
"action": {
"type": "string",
"enum": ["keep", "extract-plugin", "remove", "review"]
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"validation": {
"type": "object",
"additionalProperties": false,
"required": ["source", "lastReviewed"],
"properties": {
"source": {
"type": "array",
"items": {
"type": "string"
}
},
"lastReviewed": {
"type": "string",
"format": "date"
}
}
}
}
}