@antprofuse/saddle-islands-workflow 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md
CHANGED
|
@@ -9,11 +9,11 @@ description: 协调Islands正式输入、工程设计、独立测试和小程序
|
|
|
9
9
|
|
|
10
10
|
## 规划与路由
|
|
11
11
|
|
|
12
|
-
每次新迭代、新协同任务或实质改变目标、职责、输入、依赖、验收方式前,重新读取本正文及[任务规划规则](references/task-planning-review.md)。跨轮恢复后准备重新规划或处理集中偏差时同样重读;普通进度查询无需机械重复。
|
|
12
|
+
每次新迭代、新协同任务或实质改变目标、职责、输入、依赖、验收方式前,重新读取本正文及[任务规划规则](<references/task-planning-review.md>)。跨轮恢复后准备重新规划或处理集中偏差时同样重读;普通进度查询无需机械重复。
|
|
13
13
|
|
|
14
14
|
阶段按职责、权威输入、交付结果、公开工具和交接条件划分,不按Agent数量划分。同一Agent承担多个阶段或多个Agent分别执行时,工作策略与验收标准一致。单Agent切换阶段也需读取对应Skill、核输入并保留交付依据,不以会话记忆省略交接,不因兼任而混淆测试期望与产品实现。阶段不必各建节点,按真实依赖决定并行与串行。
|
|
15
15
|
|
|
16
|
-
先落实用户允许的仓库、目录、版本和交付目标。按[职责边界](references/ownership.md)建立来源变化到设计、测试和实现的影响关系,不因近期只处理某层而缩小完整迭代范围。
|
|
16
|
+
先落实用户允许的仓库、目录、版本和交付目标。按[职责边界](<references/ownership.md>)建立来源变化到设计、测试和实现的影响关系,不因近期只处理某层而缩小完整迭代范围。
|
|
17
17
|
|
|
18
18
|
| 工作 | 使用的角色或权威输入 |
|
|
19
19
|
|---|---|
|
|
@@ -28,10 +28,14 @@ description: 协调Islands正式输入、工程设计、独立测试和小程序
|
|
|
28
28
|
|
|
29
29
|
正式physical绑定和上游生成协议作为输入消费,不默认恢复独立adapt或人工外部协议设计阶段。真实语义缺口回报责任方,不向执行者下放未知设计或要求试到能跑。
|
|
30
30
|
|
|
31
|
+
各阶段按可重入的迭代研发执行:读取指定分支当前内容,复用有效成果并修订必要输出;不默认全新生成或清空。仓内输入输出由阶段Skill解释,节点不重复枚举“已有”目录,只绑定阶段分支及精确版本和Owner额外准备的输入。
|
|
32
|
+
|
|
31
33
|
任务节点只声明明确输入及版本、所用Skill与阶段、范围和Git分支或共享目录交付目标。通用执行、门禁、复盘和交付细则由Skill与工具说明承载,不在节点重复维护;上游产物的精确提交由检查点确认后交接。
|
|
32
34
|
|
|
33
35
|
## 工具与规则消费
|
|
34
36
|
|
|
37
|
+
生成任务图时读取[全局参数与节点模板合同](<references/task-template-contract.md>)。参数在迭代级定义,节点以Markdown展示渲染结果;不可把结构化JSON直接作为节点描述。
|
|
38
|
+
|
|
35
39
|
通用工具来自独立工具集,使用其公开入口;本Skill及其他角色Skill不包含执行、观察、断言和报告实现。Owner交接实际可取得的工具包及公开说明、适用输入及输出,不重新规定已经工具化的内部细节。缺失能力由公共维护者修复,不让消费者另写同功能脚本。
|
|
36
40
|
|
|
37
41
|
Skill与工具分别冻结仓库、完整commit、版本、制品和文件摘要,并核兼容关系。使用已提交推送且可验证的Git分发包;npm可以作为备份,不要求等待中心传播。独立Skill包含所需的使用规范与参考,公共命令和接口说明随独立工具提供;不要求使用者阅读体系研发docs。不能只拷正文或用版本号相同冒充内容一致。
|
|
@@ -44,12 +48,24 @@ Skill与工具分别冻结仓库、完整commit、版本、制品和文件摘要
|
|
|
44
48
|
|
|
45
49
|
每轮产品迭代评估本批全部未通过项,处理可独立推进部分后交付完整增量。局部测试问题退原测试负责人审查整批同因,不自动退整批;跨批公共缺陷交唯一工具维护者,仅暂停受影响集合。测试交付不替代产品结果,真实回退不能为数字单调而隐藏。
|
|
46
50
|
|
|
47
|
-
用户状态与数字按约定粒度、真实执行状态和产品交付证据更新,不把问题存在称为有人正在研发。后端覆盖方法见[固定边界覆盖规范](references/case-coverage.md),不将其组合方法用于改造Islands小程序端目录。
|
|
51
|
+
用户状态与数字按约定粒度、真实执行状态和产品交付证据更新,不把问题存在称为有人正在研发。后端覆盖方法见[固定边界覆盖规范](<references/case-coverage.md>),不将其组合方法用于改造Islands小程序端目录。
|
|
48
52
|
|
|
49
53
|
## 决策与收尾
|
|
50
54
|
|
|
51
|
-
按[变更规则](references/changes.md)明确唯一归属和受影响消费者。通用规范进本体系,业务事实与测试回归留业务项目,日志和报告留项目运行区。所有提交、推送、发布遵守对应仓库当前授权,不把本库master研发方式强加业务仓。
|
|
55
|
+
按[变更规则](<references/changes.md>)明确唯一归属和受影响消费者。通用规范进本体系,业务事实与测试回归留业务项目,日志和报告留项目运行区。所有提交、推送、发布遵守对应仓库当前授权,不把本库master研发方式强加业务仓。
|
|
52
56
|
|
|
53
|
-
节点按[简短复盘格式](references/task-retrospective.md)反馈输入、耗时、返工及改进依据。Owner核关键路径及自身规划责任,修正有证据的通用缺口,验证新成员能够消费;不能只通知旧成员或追加口号。
|
|
57
|
+
节点按[简短复盘格式](<references/task-retrospective.md>)反馈输入、耗时、返工及改进依据。Owner核关键路径及自身规划责任,修正有证据的通用缺口,验证新成员能够消费;不能只通知旧成员或追加口号。
|
|
54
58
|
|
|
55
59
|
完成时区分设计、设施、Mock验收、真实联调和生产发布。持久保存必要且唯一的交付证据,清理失效入口;不重复归档缓存、不默认生成下载包,不以编译或数量替代业务正确性。
|
|
60
|
+
|
|
61
|
+
## 迭代范围与无变更交付
|
|
62
|
+
|
|
63
|
+
阶段适用于新业务研发、已有业务的小范围变更和无业务变化的复核。按本轮目标与输入差异决定工作量;节点存在不等于必须修改代码、重建设计或重写测试,也不自动要求全量验证。优先复用仍有效成果和证据,对变更及其影响范围研发、验证。判定无需修改时交付依据、对应版本及必要检查结果,不能仅凭文件已存在认定完成;用户明确要求完整复核或全量测试时按该范围执行。无Git变更仍执行阶段交付门禁,基线与候选可以相同。
|
|
64
|
+
|
|
65
|
+
## 发起者持久管理
|
|
66
|
+
|
|
67
|
+
迭代元数据由发起者在自己workspace的iterations目录持久管理,依照参数schema由公共工具校验和记录;公共上下文只注入执行者共同需要的字段,不能用作元数据持久化。阶段输入、输出、记录目录和已接受版本由元数据按模板渲染。详细合同见references/task-template-contract.md。
|
|
68
|
+
|
|
69
|
+
任务执行记录是过程信息:执行节点写入指定记录目录,默认不得读取其他或自身的该记录区来获取研发输入;Owner在检查点读取。正式需求与设计交接通过指定工作分支和冻结输入包,必要决策先落实正式输入,不靠反馈报告形成隐性依赖。每阶段Git成果须提交并推送至指定工作分支,本地报告按指定位置写入。结束临时协同任务前归档HTML、截图和依赖资源到持久迭代reports目录、记录到records目录,核查链接并更新台账后才能放行最终检查点;不默认生成下载包。
|
|
70
|
+
|
|
71
|
+
Skill适用性反馈、工具缺陷归因和效率复盘是每轮普通迭代的常规职责,不以“体系验证专项”为前提。无变化或少变化只是本轮输入事实,不改变阶段职责和交付要求,也不因需要反馈就人为制造改动。
|
package/package.json
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 阶段Markdown模板
|
|
2
|
+
|
|
3
|
+
实际渲染由 `iteration render` 消费stage-meta及实例参数生成,下列仅说明呈现结构。不要在节点重复Skill的提交推送、门禁和复盘策略。
|
|
4
|
+
|
|
5
|
+
## 执行节点
|
|
6
|
+
|
|
7
|
+
### 输入
|
|
8
|
+
|
|
9
|
+
- 工作分支:`{workBranch}`
|
|
10
|
+
- 业务输入目录:`localPath:{businessInput}`
|
|
11
|
+
|
|
12
|
+
其他已明确的本地输入按内容列出;无分组不出现分组字段,不枚举仓内已有产物。
|
|
13
|
+
|
|
14
|
+
### 执行
|
|
15
|
+
|
|
16
|
+
使用 Skill `{skill}` 完成{stageLabel}。
|
|
17
|
+
|
|
18
|
+
### 交付
|
|
19
|
+
|
|
20
|
+
- {产物类型}目录:`gitBranchPath:{outputDirectory}`
|
|
21
|
+
- {必要单文件}:`gitBranchPath:{outputFile}`
|
|
22
|
+
- {必要本地内容}目录:`localPath:{localOutput}`
|
|
23
|
+
- 任务执行记录目录:`localPath:{recordDirectory}`
|
|
24
|
+
|
|
25
|
+
输出字段按阶段元数据及实例实际内容生成,无相应输出则省略。五类阶段分别绑定design、minifish-test、backend-test、minifish、backend,不把示例占位符原样发给执行者。
|
|
26
|
+
|
|
27
|
+
## 检查点
|
|
28
|
+
|
|
29
|
+
输入是对应工作分支与任务执行记录位置;Owner按workflow审核正式成果与记录,确认版本,必要时返修。审核记录写指定位置,最终持久保存。检查点可读取记录,不把记录再传给下游当作正式设计。
|
|
30
|
+
|
|
31
|
+
## 最终检查点
|
|
32
|
+
|
|
33
|
+
输入为末端工作分支与必要记录位置;完成整体审核、持久归档及资源验证后才能结束临时任务。持久迭代位置来自发起者元数据。Git合入需要对应授权,归档完成不等于合入授权。
|
|
@@ -39,7 +39,7 @@ Owner先消化上游输入的不确定性:核定源版本,完成必要的编
|
|
|
39
39
|
|
|
40
40
|
## 节点完成与Owner复盘
|
|
41
41
|
|
|
42
|
-
阶段交付包含短篇过程复盘,字段见[复盘模板](task-retrospective.md)。报告写任务共享证据区,最终由Owner持久归档,不能混入业务代码仓。无问题可以明确写无,不为模板制造问题。
|
|
42
|
+
阶段交付包含短篇过程复盘,字段见[复盘模板](<task-retrospective.md>)。报告写任务共享证据区,最终由Owner持久归档,不能混入业务代码仓。无问题可以明确写无,不为模板制造问题。
|
|
43
43
|
|
|
44
44
|
Owner收尾时结合报告和真实执行记录核对:
|
|
45
45
|
- 总历时与关键路径,安装/有效建设/验证/等待/返工分开;并行节点时长不能直接相加当总历时。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 迭代元数据与任务模板合同
|
|
2
|
+
|
|
3
|
+
## 发起者的持久记录
|
|
4
|
+
|
|
5
|
+
发起者在自己的workspace管理 `iterations/index.json` 与 `iterations/<iteration-id>/iteration.meta.json`。具体业务实例不进入体系源码库,也不以CoTask共享区或对话上下文作为唯一来源。元数据使用随Skill的 [强schema](<../resources/iteration.schema.json>);阶段规则由 [stage-meta](<../resources/stage-meta.json>) 定义,执行工具在独立工具集。
|
|
6
|
+
|
|
7
|
+
元数据保留目标、状态、仓库与业务目录、起始代码和业务源版本、准备物摘要、运行环境索引、共享和持久位置、阶段分支与输入输出、依赖及审核接受结果。`iteration init/update/list` 管理台账;更新用当前文件摘要防覆盖,保留历史。状态记录不是执行授权,工具不启动CoTask。元数据的变更应同步渲染结果及平台实际定义,调用后读取核对。
|
|
8
|
+
|
|
9
|
+
`persistentRoot` 必须是发起者台账根下的迭代ID目录,与临时共享根独立。最终HTML、截图和所需资源保存在其 `reports/`,执行及审核记录保存在 `records/`。共享区和成员工作目录均可能随任务结束回收。最终检查点放行前,使用 `iteration archive` 归档需要的内容并核资源完整性;动态资源和用户预览链接还需实际访问核验。台账及报告持久化不保证预览服务永久运行。不默认打ZIP,不重复归档已推送源码或可重建缓存。
|
|
10
|
+
|
|
11
|
+
## 元数据不等于公共上下文
|
|
12
|
+
|
|
13
|
+
参数在迭代级定义,不代表全部注入每个执行者。`iteration render` 按白名单呈现公共Git地址、业务范围及执行环境索引;Owner基线、来源SHA、共享根、历史结果和管理记录保留在元数据。业务源身份留在冻结输入包中可追溯,不让执行者自行选择分支中另一版Spec。
|
|
14
|
+
|
|
15
|
+
节点采用Markdown列表提供工作分支、额外准备的输入目录、Git输出权限、本地输出及任务执行记录位置;执行段只声明使用哪个Skill做哪个阶段。仓内内容按Skill理解,不枚举“已有契约”“已有测试”等字段。工作分支承载输入和交付;准确输入提交由发起者在交接时绑定,待上游接受时可暂缺,但不得据此放行。
|
|
16
|
+
|
|
17
|
+
Git路径值标记为 `gitBranchPath:`,本地绝对路径标记为 `localPath:`;标记仅用于展示,内部参数保留真实路径。Git成果必须提交并推送,本地成果直接写入指定目录。普通节点不重复这些通用操作规则。
|
|
18
|
+
|
|
19
|
+
## 按内容组织输入输出
|
|
20
|
+
|
|
21
|
+
Owner启动前形成冻结业务输入包,节点只绑定一个业务输入目录。包内含 `input.json`、`source/`、`generated/`:input.json索引本轮源版本、源读取根、生成文件类型与位置、摘要及预检结论。设计按此读取Spec/视觉/physical、必要上游协议;测试和产品消费其职责相关内容。编译预检结果不是业务通过证明。不能以当前代码分支中更新后的Spec替代冻结包。
|
|
22
|
+
|
|
23
|
+
共享目录按业务及内容组织,不按节点编号强制分割。阶段的 `localInputs` / `localOutputs` 可明确多个内容位置;每个写入位置有唯一负责人,下游通过确定依赖只读接受的版本。工具拒绝写入范围重叠、路径逃逸和循环依赖。角色可重复分组,但必须提供互不重叠的具体交付位置;不改变产品单写者规则。
|
|
24
|
+
|
|
25
|
+
`execution-records/` 是开放的日常执行记录区,用于报告、问题、复盘和检查点审核。普通执行者只写节点指定位置,默认不得读取该区;仅Owner在检查点读取。它不是下游研发输入或严格依赖,不能通过报告链接交付隐含需求。Owner将必要决策落实到正式Git成果或明确的冻结输入再交接。该规则是协同合同,不声称实施了文件系统权限隔离。
|
|
26
|
+
|
|
27
|
+
测试源码与设计等正式成果通过Git交接。若下游确实需读取测试运行收据等非Git材料,单独声明按内容命名的证据目录;只给Owner看的反馈不能混入该目录成为下游依赖。
|
|
28
|
+
|
|
29
|
+
## 阶段规则与门禁
|
|
30
|
+
|
|
31
|
+
[Markdown模板](<stage-templates.md>)解释固定呈现方式,实际规则唯一来自stage-meta和渲染工具;实例只补业务分组等有限参数,不能靠自由文本扩展写权限。设计默认允许契约、DB目录与身份登记单文件,不限定成果数量;其余阶段按对应代码目录。目录权限不要求创建空目录,不要求每轮产生Git修改。
|
|
32
|
+
|
|
33
|
+
每个阶段必须执行交付门禁;未通过不得作成功交付。发起者在阶段输入提交明确后,通过 `iteration scope` 生成精简范围文件,作为执行环境索引中的阶段配置交接。执行者用 `iteration stage-gate`,不读取Owner私有元数据。门禁从冻结workflow元数据推导允许路径,不接受临时自增白名单。
|
|
34
|
+
|
|
35
|
+
当前工具仅检查Git差异路径,重命名同时检查源和目标,删除同样受限,空diff合法。检查点仍须核对内容、真实工具消费和Skill是否缺失规则。工具未执行、输入不完整或证据不足不能报成功;无变化交付须说明范围、版本和复用依据。新研发、局部迭代和无变化复核都适用,不因图中存在阶段而强制全量重建或测试。
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"additionalProperties": false,
|
|
4
|
+
"properties": {
|
|
5
|
+
"schemaVersion": {
|
|
6
|
+
"const": 2
|
|
7
|
+
},
|
|
8
|
+
"metaVersion": {
|
|
9
|
+
"const": 2
|
|
10
|
+
},
|
|
11
|
+
"iteration": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
|
|
18
|
+
},
|
|
19
|
+
"goal": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1,
|
|
22
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
23
|
+
},
|
|
24
|
+
"state": {
|
|
25
|
+
"enum": [
|
|
26
|
+
"draft",
|
|
27
|
+
"ready",
|
|
28
|
+
"running",
|
|
29
|
+
"completed",
|
|
30
|
+
"cancelled"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"taskId": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1,
|
|
36
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"required": [
|
|
40
|
+
"id",
|
|
41
|
+
"goal",
|
|
42
|
+
"state"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"git": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"properties": {
|
|
49
|
+
"url": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1,
|
|
52
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
53
|
+
},
|
|
54
|
+
"branch": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"minLength": 1,
|
|
57
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
58
|
+
},
|
|
59
|
+
"commit": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": [
|
|
65
|
+
"url",
|
|
66
|
+
"branch",
|
|
67
|
+
"commit"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"bizdir": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 1,
|
|
73
|
+
"pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)[^\\x00-\\x1f`{}]+$"
|
|
74
|
+
},
|
|
75
|
+
"source": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"additionalProperties": false,
|
|
78
|
+
"properties": {
|
|
79
|
+
"root": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"minLength": 1,
|
|
82
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
83
|
+
},
|
|
84
|
+
"commit": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"required": [
|
|
90
|
+
"root",
|
|
91
|
+
"commit"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"sharedRoot": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"minLength": 1,
|
|
97
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
98
|
+
},
|
|
99
|
+
"persistentRoot": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1,
|
|
102
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
103
|
+
},
|
|
104
|
+
"environmentIndex": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"minLength": 1,
|
|
107
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
108
|
+
},
|
|
109
|
+
"provenance": {
|
|
110
|
+
"type": "array",
|
|
111
|
+
"items": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"additionalProperties": false,
|
|
114
|
+
"properties": {
|
|
115
|
+
"name": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"minLength": 1,
|
|
118
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
119
|
+
},
|
|
120
|
+
"path": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"minLength": 1,
|
|
123
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
124
|
+
},
|
|
125
|
+
"sha256": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"required": [
|
|
131
|
+
"name",
|
|
132
|
+
"path",
|
|
133
|
+
"sha256"
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"stages": {
|
|
138
|
+
"type": "array",
|
|
139
|
+
"minItems": 1,
|
|
140
|
+
"items": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"properties": {
|
|
144
|
+
"id": {
|
|
145
|
+
"type": "string",
|
|
146
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
|
|
147
|
+
},
|
|
148
|
+
"stage": {
|
|
149
|
+
"enum": [
|
|
150
|
+
"design",
|
|
151
|
+
"minifish-test",
|
|
152
|
+
"backend-test",
|
|
153
|
+
"minifish",
|
|
154
|
+
"backend"
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
"workBranch": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"minLength": 1,
|
|
160
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
161
|
+
},
|
|
162
|
+
"inputCommit": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
165
|
+
},
|
|
166
|
+
"dependencies": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"items": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"localInputs": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"items": {
|
|
176
|
+
"type": "object",
|
|
177
|
+
"additionalProperties": false,
|
|
178
|
+
"properties": {
|
|
179
|
+
"label": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"minLength": 1,
|
|
182
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
183
|
+
},
|
|
184
|
+
"path": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"minLength": 1,
|
|
187
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"required": [
|
|
191
|
+
"label",
|
|
192
|
+
"path"
|
|
193
|
+
]
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"localOutputs": {
|
|
197
|
+
"type": "array",
|
|
198
|
+
"items": {
|
|
199
|
+
"type": "object",
|
|
200
|
+
"additionalProperties": false,
|
|
201
|
+
"properties": {
|
|
202
|
+
"label": {
|
|
203
|
+
"type": "string",
|
|
204
|
+
"minLength": 1,
|
|
205
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
206
|
+
},
|
|
207
|
+
"path": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"minLength": 1,
|
|
210
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"required": [
|
|
214
|
+
"label",
|
|
215
|
+
"path"
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"recordDirectory": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"minLength": 1,
|
|
222
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
223
|
+
},
|
|
224
|
+
"group": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"minLength": 1,
|
|
227
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"required": [
|
|
231
|
+
"id",
|
|
232
|
+
"stage",
|
|
233
|
+
"workBranch",
|
|
234
|
+
"dependencies",
|
|
235
|
+
"localInputs",
|
|
236
|
+
"localOutputs",
|
|
237
|
+
"recordDirectory"
|
|
238
|
+
]
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"reviews": {
|
|
242
|
+
"type": "array",
|
|
243
|
+
"items": {
|
|
244
|
+
"type": "object",
|
|
245
|
+
"additionalProperties": false,
|
|
246
|
+
"properties": {
|
|
247
|
+
"stageId": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
|
|
250
|
+
},
|
|
251
|
+
"commit": {
|
|
252
|
+
"type": "string",
|
|
253
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
254
|
+
},
|
|
255
|
+
"record": {
|
|
256
|
+
"type": "string",
|
|
257
|
+
"minLength": 1,
|
|
258
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
259
|
+
},
|
|
260
|
+
"outcome": {
|
|
261
|
+
"enum": [
|
|
262
|
+
"accepted",
|
|
263
|
+
"changes-requested"
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"required": [
|
|
268
|
+
"stageId",
|
|
269
|
+
"commit",
|
|
270
|
+
"record",
|
|
271
|
+
"outcome"
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"required": [
|
|
277
|
+
"schemaVersion",
|
|
278
|
+
"metaVersion",
|
|
279
|
+
"iteration",
|
|
280
|
+
"git",
|
|
281
|
+
"bizdir",
|
|
282
|
+
"source",
|
|
283
|
+
"sharedRoot",
|
|
284
|
+
"persistentRoot",
|
|
285
|
+
"environmentIndex",
|
|
286
|
+
"provenance",
|
|
287
|
+
"stages",
|
|
288
|
+
"reviews"
|
|
289
|
+
],
|
|
290
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
291
|
+
"title": "Initiator-owned persistent iteration metadata"
|
|
292
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"stages": {
|
|
4
|
+
"design": {
|
|
5
|
+
"label": "契约设计",
|
|
6
|
+
"skill": "saddle-islands-design",
|
|
7
|
+
"outputDirectories": [
|
|
8
|
+
[
|
|
9
|
+
"契约目录",
|
|
10
|
+
"{bizdir}/code/backend-contract"
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
"数据库设计目录",
|
|
14
|
+
"{bizdir}/code/db"
|
|
15
|
+
]
|
|
16
|
+
],
|
|
17
|
+
"outputFiles": [
|
|
18
|
+
[
|
|
19
|
+
"身份登记文件",
|
|
20
|
+
"{bizdir}/code/identity-registry.json"
|
|
21
|
+
]
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"minifish-test": {
|
|
25
|
+
"label": "小程序测试研发",
|
|
26
|
+
"skill": "saddle-islands-minifish-test",
|
|
27
|
+
"outputDirectories": [
|
|
28
|
+
[
|
|
29
|
+
"测试目录",
|
|
30
|
+
"{bizdir}/code/minifish-tests"
|
|
31
|
+
]
|
|
32
|
+
],
|
|
33
|
+
"outputFiles": []
|
|
34
|
+
},
|
|
35
|
+
"backend-test": {
|
|
36
|
+
"label": "后端测试研发",
|
|
37
|
+
"skill": "saddle-islands-backend-test",
|
|
38
|
+
"outputDirectories": [
|
|
39
|
+
[
|
|
40
|
+
"测试目录",
|
|
41
|
+
"{bizdir}/code/backend-tests"
|
|
42
|
+
]
|
|
43
|
+
],
|
|
44
|
+
"outputFiles": []
|
|
45
|
+
},
|
|
46
|
+
"minifish": {
|
|
47
|
+
"label": "小程序研发",
|
|
48
|
+
"skill": "saddle-islands-minifish",
|
|
49
|
+
"outputDirectories": [
|
|
50
|
+
[
|
|
51
|
+
"产品目录",
|
|
52
|
+
"{bizdir}/code/minifish"
|
|
53
|
+
]
|
|
54
|
+
],
|
|
55
|
+
"outputFiles": []
|
|
56
|
+
},
|
|
57
|
+
"backend": {
|
|
58
|
+
"label": "后端研发",
|
|
59
|
+
"skill": "saddle-islands-backend",
|
|
60
|
+
"outputDirectories": [
|
|
61
|
+
[
|
|
62
|
+
"产品目录",
|
|
63
|
+
"{bizdir}/code/backend"
|
|
64
|
+
]
|
|
65
|
+
],
|
|
66
|
+
"outputFiles": []
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"checkpoint": {
|
|
70
|
+
"review": "按workflow审核Git成果、任务执行记录、实际工具消费和Skill改进需求,记录接受的提交及输入版本后再放行。"
|
|
71
|
+
},
|
|
72
|
+
"delivery": {
|
|
73
|
+
"review": "按workflow完成总审;结束任务前归档必要报告、截图和执行记录,核对持久资源及用户访问链接。合入另按用户授权。"
|
|
74
|
+
}
|
|
75
|
+
}
|