Files
.pouch/skills/ack/templates/tasks.schema.json
T
2026-08-24 09:44:59 +08:00

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"
]
}
}
]
}
}
}