1914 lines
43 KiB
JSON
1914 lines
43 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://git.yumee.top/laily/skills/skills/ack/templates/tasks.schema.json",
|
|
"title": "ACK task board",
|
|
"description": "tasks.yaml 的权威结构。跨语言可用;参考校验实现见 scripts/validate_tasks.py。",
|
|
"type": "object",
|
|
"required": [
|
|
"version",
|
|
"project",
|
|
"tasks"
|
|
],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"version": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"ackVersion": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$",
|
|
"description": "接入时所基于的 ack 版本,便于日后 diff 升级"
|
|
},
|
|
"kitVersion": {
|
|
"type": "string",
|
|
"description": "旧版 ACK 版本字段;兼容读取,新项目应使用 ackVersion"
|
|
},
|
|
"project": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"repoPath": {
|
|
"type": "string",
|
|
"deprecated": true,
|
|
"description": "Legacy informational field; ACK derives project files from --project-root/docs/ack"
|
|
},
|
|
"baseUrl": {
|
|
"type": "string"
|
|
},
|
|
"devWorktree": {
|
|
"type": "string",
|
|
"deprecated": true,
|
|
"description": "Legacy informational field; pass the actual worker path with --worktree"
|
|
},
|
|
"overlayFile": {
|
|
"type": "string",
|
|
"description": "项目覆盖层文件路径,默认 docs/ack/project.md,可自定义"
|
|
},
|
|
"knowledgeFile": {
|
|
"type": "string",
|
|
"const": "docs/ack/knowledge.yaml",
|
|
"description": "项目知识护栏库的唯一权威路径"
|
|
},
|
|
"deliveryFile": {
|
|
"type": "string",
|
|
"const": "docs/ack/delivery.yaml",
|
|
"description": "可选项目交付契约的唯一权威路径"
|
|
},
|
|
"bugIntake": {
|
|
"$ref": "#/definitions/feishuBugIntake"
|
|
},
|
|
"orchestration": {
|
|
"$ref": "#/definitions/orchestration"
|
|
}
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"verified": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"open": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"failedRetest": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"leftovers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"statusReference": {
|
|
"type": "object"
|
|
},
|
|
"workerReceipts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/workerReceipt"
|
|
}
|
|
},
|
|
"deliveryRuns": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/deliveryRun"
|
|
}
|
|
},
|
|
"tasks": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/task"
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"ackVersion": {
|
|
"type": "string",
|
|
"pattern": "^(?:0\\.[1-9][0-9]+\\.[0-9]+|[1-9][0-9]*\\.[0-9]+\\.[0-9]+)(?:-|\\+|$)"
|
|
}
|
|
},
|
|
"required": [
|
|
"ackVersion"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"workerReceipts"
|
|
],
|
|
"properties": {
|
|
"workerReceipts": {},
|
|
"tasks": {
|
|
"$ref": "#/definitions/launchableTasks"
|
|
},
|
|
"project": {
|
|
"type": "object",
|
|
"required": [
|
|
"orchestration"
|
|
],
|
|
"properties": {
|
|
"orchestration": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"project": {
|
|
"type": "object",
|
|
"required": [
|
|
"orchestration"
|
|
],
|
|
"properties": {
|
|
"orchestration": {}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"project"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"workerReceipts"
|
|
],
|
|
"properties": {
|
|
"workerReceipts": {},
|
|
"tasks": {
|
|
"$ref": "#/definitions/launchableTasks"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"required": [
|
|
"workerReceipts"
|
|
],
|
|
"properties": {
|
|
"workerReceipts": {}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"tasks": {
|
|
"$ref": "#/definitions/launchableTasks"
|
|
},
|
|
"project": {
|
|
"type": "object",
|
|
"required": [
|
|
"orchestration"
|
|
],
|
|
"properties": {
|
|
"orchestration": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"project": {
|
|
"type": "object",
|
|
"required": [
|
|
"deliveryFile"
|
|
],
|
|
"properties": {
|
|
"deliveryFile": {}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"project"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"deliveryRuns"
|
|
],
|
|
"properties": {
|
|
"deliveryRuns": {}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"definitions": {
|
|
"sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[0-9a-f]{64}$"
|
|
},
|
|
"feishuBugIntake": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider",
|
|
"profile",
|
|
"baseToken",
|
|
"tableId",
|
|
"viewId",
|
|
"fields"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"provider": {
|
|
"const": "feishu-base"
|
|
},
|
|
"workflow": {
|
|
"type": "string",
|
|
"enum": [
|
|
"read-only-v1",
|
|
"reviewed-writeback-v1",
|
|
"clarified-writeback-v1"
|
|
]
|
|
},
|
|
"profile": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
},
|
|
"baseToken": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"tableId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"viewId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"fields": {
|
|
"type": "object",
|
|
"required": [],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"actual": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"expected": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"stepsToReproduce": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"fixLogic": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"acceptance": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"priority": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"attachments": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"details": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"problemStatement": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"expectedOutcome": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"intakeStatus": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
},
|
|
"ackTaskId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^\\S+$"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"not": {
|
|
"properties": {
|
|
"workflow": {
|
|
"const": "clarified-writeback-v1"
|
|
}
|
|
},
|
|
"required": [
|
|
"workflow"
|
|
]
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"fields": {
|
|
"required": [
|
|
"title",
|
|
"actual",
|
|
"expected",
|
|
"stepsToReproduce",
|
|
"acceptance",
|
|
"attachments",
|
|
"updatedAt"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"workflow": {
|
|
"const": "reviewed-writeback-v1"
|
|
}
|
|
},
|
|
"required": [
|
|
"workflow"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"fields": {
|
|
"required": [
|
|
"fixLogic",
|
|
"priority"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"workflow": {
|
|
"const": "clarified-writeback-v1"
|
|
}
|
|
},
|
|
"required": [
|
|
"workflow"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"fields": {
|
|
"required": [
|
|
"title",
|
|
"details",
|
|
"problemStatement",
|
|
"expectedOutcome",
|
|
"acceptance",
|
|
"intakeStatus",
|
|
"ackTaskId",
|
|
"attachments",
|
|
"updatedAt"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"feishuTaskSource": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"ref",
|
|
"recordId",
|
|
"updatedAt"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"kind": {
|
|
"const": "feishu-base"
|
|
},
|
|
"workflow": {
|
|
"type": "string",
|
|
"enum": [
|
|
"read-only-v1",
|
|
"reviewed-writeback-v1",
|
|
"clarified-writeback-v1"
|
|
]
|
|
},
|
|
"ref": {
|
|
"type": "string",
|
|
"pattern": "^feishu-base:sha256:[0-9a-f]{64}$"
|
|
},
|
|
"recordId": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"approvedRevision": {
|
|
"$ref": "#/definitions/sha256"
|
|
},
|
|
"approvedPayloadHash": {
|
|
"$ref": "#/definitions/sha256"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"workflow": {
|
|
"const": "reviewed-writeback-v1"
|
|
}
|
|
},
|
|
"required": [
|
|
"workflow"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"approvedRevision",
|
|
"approvedPayloadHash"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"workflow": {
|
|
"const": "clarified-writeback-v1"
|
|
}
|
|
},
|
|
"required": [
|
|
"workflow"
|
|
]
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"approvedRevision",
|
|
"approvedPayloadHash"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"profileId": {
|
|
"type": "string",
|
|
"pattern": "^[a-z][a-z0-9-]{1,63}$"
|
|
},
|
|
"launchableTasks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"modelList": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+@-]{0,127}$"
|
|
}
|
|
},
|
|
"modelTierAllowlist": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"standard": {
|
|
"$ref": "#/definitions/modelList"
|
|
},
|
|
"strong": {
|
|
"$ref": "#/definitions/modelList"
|
|
}
|
|
}
|
|
},
|
|
"modelRoleAllowlist": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"developer": {
|
|
"$ref": "#/definitions/modelTierAllowlist"
|
|
},
|
|
"test": {
|
|
"$ref": "#/definitions/modelTierAllowlist"
|
|
}
|
|
}
|
|
},
|
|
"modelAllowlist": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"codex": {
|
|
"$ref": "#/definitions/modelRoleAllowlist"
|
|
},
|
|
"cursor-agent": {
|
|
"$ref": "#/definitions/modelRoleAllowlist"
|
|
},
|
|
"grok": {
|
|
"$ref": "#/definitions/modelRoleAllowlist"
|
|
}
|
|
}
|
|
},
|
|
"workerProfile": {
|
|
"type": "object",
|
|
"required": [
|
|
"role",
|
|
"cli",
|
|
"tier",
|
|
"model",
|
|
"reasoningEffort",
|
|
"permissionMode"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"developer",
|
|
"test"
|
|
]
|
|
},
|
|
"cli": {
|
|
"type": "string",
|
|
"enum": [
|
|
"codex",
|
|
"cursor-agent",
|
|
"grok",
|
|
"omp"
|
|
]
|
|
},
|
|
"tier": {
|
|
"type": "string",
|
|
"enum": [
|
|
"standard",
|
|
"strong"
|
|
]
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+@-]{0,127}$"
|
|
},
|
|
"reasoningEffort": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"enum": [
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
null
|
|
]
|
|
},
|
|
"permissionMode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"read-only",
|
|
"workspace-write"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"workerDefaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"developer": {
|
|
"$ref": "#/definitions/profileId"
|
|
},
|
|
"test": {
|
|
"$ref": "#/definitions/profileId"
|
|
},
|
|
"developerUpgraded": {
|
|
"$ref": "#/definitions/profileId"
|
|
}
|
|
}
|
|
},
|
|
"orchestration": {
|
|
"type": "object",
|
|
"required": [
|
|
"profileVersion",
|
|
"mode",
|
|
"modelAllowlist",
|
|
"profiles",
|
|
"defaults"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"profileVersion": {
|
|
"type": "integer",
|
|
"const": 1
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"orca",
|
|
"manual"
|
|
]
|
|
},
|
|
"allowedWorktrees": {
|
|
"type": "array",
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^/"
|
|
},
|
|
"description": "已废弃(v0.19 起)。为兼容旧任务板保留,新任务板不应配置;launcher 不再校验。"
|
|
},
|
|
"modelAllowlist": {
|
|
"$ref": "#/definitions/modelAllowlist"
|
|
},
|
|
"profiles": {
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"$ref": "#/definitions/profileId"
|
|
},
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/workerProfile"
|
|
}
|
|
},
|
|
"defaults": {
|
|
"$ref": "#/definitions/workerDefaults"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"mode": {
|
|
"const": "orca"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"modelAllowlist": {
|
|
"type": "object",
|
|
"minProperties": 1
|
|
},
|
|
"profiles": {
|
|
"type": "object",
|
|
"minProperties": 1
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"required": [
|
|
"developer",
|
|
"test"
|
|
],
|
|
"properties": {
|
|
"developer": {},
|
|
"test": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"worktreeIdentity": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"device",
|
|
"inode",
|
|
"gitCommonDir",
|
|
"gitCommonDevice",
|
|
"gitCommonInode"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"pattern": "^/"
|
|
},
|
|
"device": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"inode": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"gitCommonDir": {
|
|
"type": "string",
|
|
"pattern": "^/"
|
|
},
|
|
"gitCommonDevice": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"gitCommonInode": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
},
|
|
"receiptRequested": {
|
|
"type": "object",
|
|
"required": [
|
|
"cli",
|
|
"tier",
|
|
"model",
|
|
"reasoningEffort",
|
|
"permissionMode",
|
|
"executable",
|
|
"executableDevice",
|
|
"executableInode",
|
|
"cliVersion",
|
|
"argv",
|
|
"argvHash",
|
|
"environmentPolicy"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"cli": {
|
|
"type": "string",
|
|
"enum": [
|
|
"codex",
|
|
"cursor-agent",
|
|
"grok",
|
|
"omp"
|
|
]
|
|
},
|
|
"tier": {
|
|
"type": "string",
|
|
"enum": [
|
|
"standard",
|
|
"strong"
|
|
]
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+@-]{0,127}$"
|
|
},
|
|
"reasoningEffort": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"enum": [
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
null
|
|
]
|
|
},
|
|
"permissionMode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"read-only",
|
|
"workspace-write"
|
|
]
|
|
},
|
|
"executable": {
|
|
"type": "string",
|
|
"pattern": "^/"
|
|
},
|
|
"executableDevice": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"executableInode": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"cliVersion": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"argv": {
|
|
"type": "array",
|
|
"minItems": 2,
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"argvHash": {
|
|
"$ref": "#/definitions/sha256"
|
|
},
|
|
"environmentPolicy": {
|
|
"type": "string",
|
|
"const": "per-cli-allowlist-v1"
|
|
}
|
|
}
|
|
},
|
|
"receiptBinding": {
|
|
"type": "object",
|
|
"required": [
|
|
"orchestrator",
|
|
"runtimeId",
|
|
"handle",
|
|
"incarnationId",
|
|
"observedWorktreePath",
|
|
"connected",
|
|
"writable",
|
|
"boundAt"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"orchestrator": {
|
|
"type": "string",
|
|
"const": "orca"
|
|
},
|
|
"runtimeId": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"handle": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"incarnationId": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"observedWorktreePath": {
|
|
"type": "string"
|
|
},
|
|
"connected": {
|
|
"type": "boolean"
|
|
},
|
|
"writable": {
|
|
"type": "boolean"
|
|
},
|
|
"boundAt": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"workerReceipt": {
|
|
"type": "object",
|
|
"required": [
|
|
"receiptVersion",
|
|
"id",
|
|
"launchId",
|
|
"profileId",
|
|
"profileHash",
|
|
"launchFingerprint",
|
|
"slot",
|
|
"createdFor",
|
|
"worktree",
|
|
"requested",
|
|
"binding",
|
|
"createdAt",
|
|
"receiptHash"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"receiptVersion": {
|
|
"type": "integer",
|
|
"const": 1
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^WR-[0-9a-f]{64}$"
|
|
},
|
|
"launchId": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-f]{64}$"
|
|
},
|
|
"profileId": {
|
|
"$ref": "#/definitions/profileId"
|
|
},
|
|
"profileHash": {
|
|
"$ref": "#/definitions/sha256"
|
|
},
|
|
"launchFingerprint": {
|
|
"$ref": "#/definitions/sha256"
|
|
},
|
|
"projectRoot": {
|
|
"type": "string",
|
|
"pattern": "^/"
|
|
},
|
|
"boardHash": {
|
|
"$ref": "#/definitions/sha256"
|
|
},
|
|
"slot": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 99
|
|
},
|
|
"createdFor": {
|
|
"type": "object",
|
|
"required": [
|
|
"taskId",
|
|
"attemptId",
|
|
"role"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"taskId": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"attemptId": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*-A[1-3]$"
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"developer",
|
|
"test"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"worktree": {
|
|
"$ref": "#/definitions/worktreeIdentity"
|
|
},
|
|
"requested": {
|
|
"$ref": "#/definitions/receiptRequested"
|
|
},
|
|
"binding": {
|
|
"$ref": "#/definitions/receiptBinding"
|
|
},
|
|
"createdAt": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"receiptHash": {
|
|
"$ref": "#/definitions/sha256"
|
|
}
|
|
}
|
|
},
|
|
"roleDispatch": {
|
|
"type": "object",
|
|
"required": [
|
|
"profileId",
|
|
"receiptId",
|
|
"attemptId",
|
|
"taskId",
|
|
"dispatchId"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"profileId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^[a-z][a-z0-9-]{1,63}$"
|
|
},
|
|
"receiptId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^WR-[0-9a-f]{64}$"
|
|
},
|
|
"attemptId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*-A[1-3]$"
|
|
},
|
|
"taskId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"dispatchId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"receiptId": {
|
|
"type": "null"
|
|
}
|
|
},
|
|
"required": [
|
|
"receiptId"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"attemptId": {
|
|
"type": "null"
|
|
}
|
|
}
|
|
},
|
|
"else": {
|
|
"properties": {
|
|
"profileId": {
|
|
"type": "string"
|
|
},
|
|
"attemptId": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"open",
|
|
"dispatched",
|
|
"fixed_by_dev",
|
|
"retesting",
|
|
"failed_retest",
|
|
"verified",
|
|
"blocked",
|
|
"leftover"
|
|
]
|
|
},
|
|
"round": {
|
|
"type": "object",
|
|
"required": [
|
|
"round",
|
|
"result"
|
|
],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"round": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 3
|
|
},
|
|
"attemptId": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*-A[1-3]$",
|
|
"description": "稳定逻辑轮次 ID,应为 <task-id>-A<round>;旧轮次可缺省,但作为知识来源前必须补齐"
|
|
},
|
|
"result": {
|
|
"type": "string",
|
|
"enum": [
|
|
"passed",
|
|
"failed"
|
|
]
|
|
},
|
|
"evidence": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"environmentIncident": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"role",
|
|
"phase",
|
|
"status",
|
|
"summary",
|
|
"evidence",
|
|
"impact",
|
|
"recoveryAction",
|
|
"userAction",
|
|
"reportedAt"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*-ENV-[1-9][0-9]*$"
|
|
},
|
|
"attemptId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"coordinator",
|
|
"developer",
|
|
"test"
|
|
]
|
|
},
|
|
"phase": {
|
|
"type": "string",
|
|
"enum": [
|
|
"launch",
|
|
"orchestration",
|
|
"service",
|
|
"test_data",
|
|
"browser",
|
|
"tooling",
|
|
"permissions",
|
|
"other"
|
|
]
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"open",
|
|
"resolved"
|
|
]
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"evidence": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"impact": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"recoveryAction": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"userAction": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"reportedAt": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"resolvedAt": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"knowledgeRef": {
|
|
"type": "string",
|
|
"pattern": "^K-[A-Z0-9][A-Z0-9-]*@[1-9][0-9]*$"
|
|
},
|
|
"knowledgeCandidate": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"title",
|
|
"claim",
|
|
"scope",
|
|
"appliesWhen",
|
|
"directive",
|
|
"rationale",
|
|
"evidenceRefs"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"guardrail",
|
|
"pitfall",
|
|
"verification"
|
|
]
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"claim": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"scope": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"all": {
|
|
"type": "boolean"
|
|
},
|
|
"components": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"dependencies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"versions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"symbols": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"errorSignatures": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
}
|
|
}
|
|
},
|
|
"appliesWhen": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"directive": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"rationale": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"evidenceRefs": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"proposedBy": {
|
|
"type": "string"
|
|
},
|
|
"proposedAt": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"knowledgeApplication": {
|
|
"type": "object",
|
|
"required": [
|
|
"ref",
|
|
"result",
|
|
"evidence"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"ref": {
|
|
"$ref": "#/definitions/knowledgeRef"
|
|
},
|
|
"result": {
|
|
"type": "string",
|
|
"enum": [
|
|
"applied",
|
|
"not_applicable"
|
|
]
|
|
},
|
|
"evidence": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"knowledgeCheck": {
|
|
"type": "object",
|
|
"required": [
|
|
"ref",
|
|
"result",
|
|
"evidence"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"ref": {
|
|
"$ref": "#/definitions/knowledgeRef"
|
|
},
|
|
"result": {
|
|
"type": "string",
|
|
"enum": [
|
|
"passed",
|
|
"failed",
|
|
"not_applicable"
|
|
]
|
|
},
|
|
"evidence": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"checkedBy": {
|
|
"type": "string"
|
|
},
|
|
"checkedAt": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"deliveryArtifactEvidence": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"type",
|
|
"reference"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^[a-z][a-z0-9-]{0,63}$"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"deb",
|
|
"oci-image",
|
|
"file"
|
|
]
|
|
},
|
|
"reference": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"digest": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^sha256:[0-9a-f]{64}$"
|
|
}
|
|
}
|
|
},
|
|
"deliveryDeploymentEvidence": {
|
|
"type": "object",
|
|
"required": [
|
|
"environment",
|
|
"result",
|
|
"evidence"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"environment": {
|
|
"type": "string",
|
|
"pattern": "^[a-z][a-z0-9-]{0,63}$"
|
|
},
|
|
"result": {
|
|
"type": "string",
|
|
"enum": [
|
|
"succeeded",
|
|
"failed",
|
|
"rolled_back"
|
|
]
|
|
},
|
|
"evidence": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"deliveryRun": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"profile",
|
|
"taskIds",
|
|
"status",
|
|
"sourceRevision",
|
|
"configRevision",
|
|
"pullRequest",
|
|
"artifacts",
|
|
"deployments",
|
|
"evidence",
|
|
"updatedAt"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"pattern": "^DR-[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
|
|
},
|
|
"profile": {
|
|
"type": "string",
|
|
"pattern": "^[a-z][a-z0-9-]{0,63}$"
|
|
},
|
|
"intent": {
|
|
"type": "string",
|
|
"enum": [
|
|
"testEnvironment",
|
|
"release"
|
|
],
|
|
"description": "用户触发的测试环境或发版操作;有 intent 时 taskIds 可为 []"
|
|
},
|
|
"taskIds": {
|
|
"type": "array",
|
|
"minItems": 0,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"planned",
|
|
"running",
|
|
"blocked",
|
|
"failed",
|
|
"validation_ready",
|
|
"review_ready",
|
|
"released",
|
|
"skipped"
|
|
]
|
|
},
|
|
"sourceRevision": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^[0-9a-f]{7,64}$"
|
|
},
|
|
"configRevision": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"pattern": "^[0-9a-f]{7,64}$"
|
|
},
|
|
"pullRequest": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"artifacts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/deliveryArtifactEvidence"
|
|
}
|
|
},
|
|
"deployments": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/deliveryDeploymentEvidence"
|
|
}
|
|
},
|
|
"evidence": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"updatedAt": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"status": {
|
|
"enum": [
|
|
"planned",
|
|
"running",
|
|
"blocked",
|
|
"failed",
|
|
"validation_ready",
|
|
"review_ready",
|
|
"released"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"sourceRevision": {
|
|
"type": "string"
|
|
},
|
|
"configRevision": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"status": {
|
|
"enum": [
|
|
"blocked",
|
|
"failed",
|
|
"validation_ready",
|
|
"review_ready",
|
|
"released",
|
|
"skipped"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"evidence": {
|
|
"minItems": 1
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"status": {
|
|
"enum": [
|
|
"review_ready",
|
|
"released"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status"
|
|
]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"sourceRevision": {
|
|
"type": "string"
|
|
},
|
|
"configRevision": {
|
|
"type": "string"
|
|
},
|
|
"pullRequest": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"evidence": {
|
|
"minItems": 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"task": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"status"
|
|
],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"priority": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/status"
|
|
},
|
|
"assignee": {
|
|
"type": "string"
|
|
},
|
|
"component": {
|
|
"type": "string"
|
|
},
|
|
"specRefs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"testRefs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"knowledgeRefs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/knowledgeRef"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"knowledgeApplied": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/knowledgeApplication"
|
|
}
|
|
},
|
|
"knowledgeCandidates": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/knowledgeCandidate"
|
|
}
|
|
},
|
|
"knowledgeChecks": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/knowledgeCheck"
|
|
}
|
|
},
|
|
"source": {
|
|
"if": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "feishu-base"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"$ref": "#/definitions/feishuTaskSource"
|
|
}
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"fixLogic": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
},
|
|
"acceptanceCriteria": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
}
|
|
},
|
|
"stepsToReproduce": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"expected": {
|
|
"type": "string"
|
|
},
|
|
"actual": {
|
|
"type": "string"
|
|
},
|
|
"evidence": {
|
|
"type": "object"
|
|
},
|
|
"verification": {
|
|
"type": "object"
|
|
},
|
|
"dispatch": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"taskId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"dispatchId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"worker": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"developer": {
|
|
"$ref": "#/definitions/roleDispatch"
|
|
},
|
|
"test": {
|
|
"$ref": "#/definitions/roleDispatch"
|
|
},
|
|
"rounds": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/round"
|
|
}
|
|
},
|
|
"environmentIncidents": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/environmentIncident"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"resolution": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"fixedBy": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"verifiedBy": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"verifiedAt": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"leftoverReason": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"evidence": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"status": {
|
|
"const": "leftover"
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"resolution": {
|
|
"type": "object",
|
|
"properties": {
|
|
"leftoverReason": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "\\S"
|
|
}
|
|
},
|
|
"required": [
|
|
"leftoverReason"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"resolution"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|