74 lines
2.3 KiB
JSON
74 lines
2.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "dev/phase-plan@1",
|
|
"title": "Devflow Phase Plan",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["phases"],
|
|
"properties": {
|
|
"phases": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["key", "title", "objective", "roles"],
|
|
"properties": {
|
|
"key": { "type": "string", "minLength": 1 },
|
|
"title": { "type": "string", "minLength": 1 },
|
|
"objective": { "type": "string", "minLength": 1 },
|
|
"roles": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "type": "string", "minLength": 1 }
|
|
},
|
|
"expectedArtifact": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["path", "schema"],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"pattern": "^(?!.*:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[A-Za-z0-9._-]+(?:/[A-Za-z0-9._-]+)*$"
|
|
},
|
|
"schema": {
|
|
"type": "string",
|
|
"pattern": "^[a-z][a-z0-9_-]*/[a-z][a-z0-9_-]*@[1-9][0-9]*$"
|
|
}
|
|
}
|
|
},
|
|
"gates": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1 }
|
|
},
|
|
"tasks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "title", "role", "writeSet"],
|
|
"properties": {
|
|
"id": { "type": "string", "minLength": 1 },
|
|
"title": { "type": "string", "minLength": 1 },
|
|
"role": { "type": "string", "minLength": 1 },
|
|
"writeSet": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^(?!/)(?!.*:)(?!.*[!{}()\\[\\]\\\\\\r\\n])(?!.*(?:^|/)\\.{1,2}(?:/|$)).+$"
|
|
}
|
|
},
|
|
"dependsOn": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|