@antprofuse/saddle-islands-workflow 0.1.0 → 0.1.2
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
|
@@ -28,9 +28,15 @@ description: 协调Islands正式输入、工程设计、独立测试和小程序
|
|
|
28
28
|
|
|
29
29
|
正式physical绑定和上游生成协议作为输入消费,不默认恢复独立adapt或人工外部协议设计阶段。真实语义缺口回报责任方,不向执行者下放未知设计或要求试到能跑。
|
|
30
30
|
|
|
31
|
+
各阶段按可重入的迭代研发执行:读取指定分支当前内容,复用有效成果并修订必要输出;不默认全新生成或清空。仓内输入输出由阶段Skill解释,节点不重复枚举“已有”目录,只绑定阶段分支及精确版本和Owner额外准备的输入。
|
|
32
|
+
|
|
33
|
+
任务节点只声明明确输入及版本、所用Skill与阶段、范围和Git分支或共享目录交付目标。通用执行、门禁、复盘和交付细则由Skill与工具说明承载,不在节点重复维护;上游产物的精确提交由检查点确认后交接。
|
|
34
|
+
|
|
31
35
|
## 工具与规则消费
|
|
32
36
|
|
|
33
|
-
|
|
37
|
+
生成任务图时读取[全局参数与节点模板合同](<references/task-template-contract.md>)。参数在迭代级定义,节点以Markdown展示渲染结果;不可把结构化JSON直接作为节点描述。
|
|
38
|
+
|
|
39
|
+
通用工具来自独立工具集,使用其公开入口;本Skill及其他角色Skill不包含执行、观察、断言和报告实现。Owner交接实际可取得的工具包及公开说明、适用输入及输出,不重新规定已经工具化的内部细节。缺失能力由公共维护者修复,不让消费者另写同功能脚本。
|
|
34
40
|
|
|
35
41
|
Skill与工具分别冻结仓库、完整commit、版本、制品和文件摘要,并核兼容关系。使用已提交推送且可验证的Git分发包;npm可以作为备份,不要求等待中心传播。独立Skill包含所需的使用规范与参考,公共命令和接口说明随独立工具提供;不要求使用者阅读体系研发docs。不能只拷正文或用版本号相同冒充内容一致。
|
|
36
42
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# 阶段Markdown模板
|
|
2
|
+
|
|
3
|
+
下列模板供发起者渲染任务描述。仅格式和已有阶段职责固定,不预设设计数量或测试结果。路径来自全局参数和阶段元数据;节点不能自行扩大写入范围。可选分组信息另列字段。
|
|
4
|
+
|
|
5
|
+
## 公共上下文
|
|
6
|
+
|
|
7
|
+
- 仓库:`{git.url}`
|
|
8
|
+
- 基线分支:`{git.branch}`
|
|
9
|
+
- 基线提交:`{git.commit}`
|
|
10
|
+
- 业务目录:`{bizdir}`
|
|
11
|
+
- 业务源版本:`{source.commit}`
|
|
12
|
+
- 业务源根目录:`{sourceRoot}`
|
|
13
|
+
- 共享根目录:`{sharedRoot}`
|
|
14
|
+
- Skill版本清单:`{skills.manifest}`
|
|
15
|
+
- 工具目录:`{tools.root}`
|
|
16
|
+
|
|
17
|
+
迭代授权、来源边界等说明使用文本段落。
|
|
18
|
+
|
|
19
|
+
## 契约设计
|
|
20
|
+
|
|
21
|
+
### 输入
|
|
22
|
+
|
|
23
|
+
- 工作分支:`{workBranch}`
|
|
24
|
+
- 业务输入目录:`localPath:{sourceRoot}/{bizdir}`
|
|
25
|
+
- 官方测试目录文件:`localPath:{generated.catalog}`
|
|
26
|
+
- 上游协议目录:`localPath:{generated.protocolDir}`
|
|
27
|
+
- 输入预检结果:`localPath:{preflight.result}`
|
|
28
|
+
|
|
29
|
+
### 执行
|
|
30
|
+
|
|
31
|
+
使用 `saddle-islands-design` 完成契约设计阶段。
|
|
32
|
+
|
|
33
|
+
- Skill入口:`{skills.design.path}`
|
|
34
|
+
|
|
35
|
+
### 交付
|
|
36
|
+
|
|
37
|
+
- 契约目录:`gitBranchPath:{bizdir}/code/backend-contract`
|
|
38
|
+
- 数据库设计目录:`gitBranchPath:{bizdir}/code/db`
|
|
39
|
+
- 身份登记文件:`gitBranchPath:{bizdir}/code/identity-registry.json`
|
|
40
|
+
- 任务信息目录:`localPath:{sharedOutputDirectory}`
|
|
41
|
+
- 交付门禁:`iteration diff-review`
|
|
42
|
+
|
|
43
|
+
Git交付路径相对仓库根解析;成果须提交并推送到工作分支。本地任务信息目录直接写入,不提交Git。
|
|
44
|
+
|
|
45
|
+
交付前必须执行交付门禁;门禁未通过,不得作成功交付。
|
|
46
|
+
|
|
47
|
+
## 小程序测试研发
|
|
48
|
+
|
|
49
|
+
### 输入
|
|
50
|
+
|
|
51
|
+
- 工作分支:`{workBranch}`
|
|
52
|
+
- 业务输入目录:`localPath:{sourceRoot}/{bizdir}`
|
|
53
|
+
- 设计交付版本:`{accepted.design.commit}`
|
|
54
|
+
- 官方测试目录文件:`localPath:{generated.catalog}`
|
|
55
|
+
|
|
56
|
+
### 执行
|
|
57
|
+
|
|
58
|
+
使用 `saddle-islands-minifish-test` 完成小程序测试研发阶段。
|
|
59
|
+
|
|
60
|
+
- Skill入口:`{skills.minifish-test.path}`
|
|
61
|
+
|
|
62
|
+
### 交付
|
|
63
|
+
|
|
64
|
+
- 测试目录:`gitBranchPath:{bizdir}/code/minifish-tests`
|
|
65
|
+
- 任务信息目录:`localPath:{sharedOutputDirectory}`
|
|
66
|
+
- 交付门禁:`iteration diff-review`
|
|
67
|
+
|
|
68
|
+
Git交付路径相对仓库根解析;成果须提交并推送到工作分支。本地任务信息目录直接写入,不提交Git。
|
|
69
|
+
|
|
70
|
+
交付前必须执行交付门禁;门禁未通过,不得作成功交付。
|
|
71
|
+
|
|
72
|
+
## 后端测试研发
|
|
73
|
+
|
|
74
|
+
### 输入
|
|
75
|
+
|
|
76
|
+
- 工作分支:`{workBranch}`
|
|
77
|
+
- 业务输入目录:`localPath:{sourceRoot}/{bizdir}`
|
|
78
|
+
- 设计交付版本:`{accepted.design.commit}`
|
|
79
|
+
- 上游协议目录:`localPath:{generated.protocolDir}`
|
|
80
|
+
|
|
81
|
+
### 执行
|
|
82
|
+
|
|
83
|
+
使用 `saddle-islands-backend-test` 完成后端测试研发阶段。
|
|
84
|
+
|
|
85
|
+
- Skill入口:`{skills.backend-test.path}`
|
|
86
|
+
|
|
87
|
+
### 交付
|
|
88
|
+
|
|
89
|
+
- 测试目录:`gitBranchPath:{bizdir}/code/backend-tests`
|
|
90
|
+
- 任务信息目录:`localPath:{sharedOutputDirectory}`
|
|
91
|
+
- 交付门禁:`iteration diff-review`
|
|
92
|
+
|
|
93
|
+
Git交付路径相对仓库根解析;成果须提交并推送到工作分支。本地任务信息目录直接写入,不提交Git。
|
|
94
|
+
|
|
95
|
+
交付前必须执行交付门禁;门禁未通过,不得作成功交付。
|
|
96
|
+
|
|
97
|
+
## 小程序研发
|
|
98
|
+
|
|
99
|
+
### 输入
|
|
100
|
+
|
|
101
|
+
- 工作分支:`{workBranch}`
|
|
102
|
+
- 业务输入目录:`localPath:{sourceRoot}/{bizdir}`
|
|
103
|
+
- 测试交付版本:`{accepted.minifishTest.commit}`
|
|
104
|
+
|
|
105
|
+
### 执行
|
|
106
|
+
|
|
107
|
+
使用 `saddle-islands-minifish` 完成小程序研发阶段。
|
|
108
|
+
|
|
109
|
+
- Skill入口:`{skills.minifish.path}`
|
|
110
|
+
|
|
111
|
+
### 交付
|
|
112
|
+
|
|
113
|
+
- 产品目录:`gitBranchPath:{bizdir}/code/minifish`
|
|
114
|
+
- 任务信息目录:`localPath:{sharedOutputDirectory}`
|
|
115
|
+
- 交付门禁:`iteration diff-review`
|
|
116
|
+
|
|
117
|
+
Git交付路径相对仓库根解析;成果须提交并推送到工作分支。本地任务信息目录直接写入,不提交Git。
|
|
118
|
+
|
|
119
|
+
交付前必须执行交付门禁;门禁未通过,不得作成功交付。
|
|
120
|
+
|
|
121
|
+
## 后端研发
|
|
122
|
+
|
|
123
|
+
### 输入
|
|
124
|
+
|
|
125
|
+
- 工作分支:`{workBranch}`
|
|
126
|
+
- 业务输入目录:`localPath:{sourceRoot}/{bizdir}`
|
|
127
|
+
- 测试交付版本:`{accepted.backendTest.commit}`
|
|
128
|
+
- 上游协议目录:`localPath:{generated.protocolDir}`
|
|
129
|
+
|
|
130
|
+
### 执行
|
|
131
|
+
|
|
132
|
+
使用 `saddle-islands-backend` 完成后端研发阶段。
|
|
133
|
+
|
|
134
|
+
- Skill入口:`{skills.backend.path}`
|
|
135
|
+
|
|
136
|
+
### 交付
|
|
137
|
+
|
|
138
|
+
- 产品目录:`gitBranchPath:{bizdir}/code/backend`
|
|
139
|
+
- 任务信息目录:`localPath:{sharedOutputDirectory}`
|
|
140
|
+
- 交付门禁:`iteration diff-review`
|
|
141
|
+
|
|
142
|
+
Git交付路径相对仓库根解析;成果须提交并推送到工作分支。本地任务信息目录直接写入,不提交Git。
|
|
143
|
+
|
|
144
|
+
交付前必须执行交付门禁;门禁未通过,不得作成功交付。
|
|
145
|
+
|
|
146
|
+
## 阶段检查点
|
|
147
|
+
|
|
148
|
+
### 输入
|
|
149
|
+
|
|
150
|
+
- 阶段工作分支:`{stage.workBranch}`
|
|
151
|
+
- 阶段任务信息目录:`localPath:{stage.sharedOutputDirectory}`
|
|
152
|
+
|
|
153
|
+
### 审核
|
|
154
|
+
|
|
155
|
+
按workflow核阶段成果、工具消费、Skill改进需求及交付目录。确认后固定下游输入;发现问题交对应责任方修复复验。
|
|
156
|
+
|
|
157
|
+
### 交付
|
|
158
|
+
|
|
159
|
+
- 下游输入登记目录:`localPath:{acceptedInputsDirectory}`
|
|
160
|
+
- 审核记录目录:`localPath:{checkpointOutputDirectory}`
|
|
161
|
+
|
|
162
|
+
## 最终交付检查点
|
|
163
|
+
|
|
164
|
+
### 输入
|
|
165
|
+
|
|
166
|
+
- 小程序工作分支:`{minifish.workBranch}`
|
|
167
|
+
- 后端工作分支:`{backend.workBranch}`
|
|
168
|
+
- 阶段交付信息目录:`localPath:{deliverablesDirectory}`
|
|
169
|
+
|
|
170
|
+
### 审核
|
|
171
|
+
|
|
172
|
+
按workflow完成两端总审,确认阶段结论及体系改进已交接,并持久保存必要证据。合入依用户授权。
|
|
173
|
+
|
|
174
|
+
### 交付
|
|
175
|
+
|
|
176
|
+
- 持久交付目录:`localPath:{persistentDeliveryDirectory}`
|
|
@@ -10,14 +10,18 @@
|
|
|
10
10
|
- 在放行并行任务前核清共同入口、真实请求边界、可调用公共接口、工具与规则版本。未决业务选择列出依据供用户决策,不派开放任务靠执行者猜。
|
|
11
11
|
- 按写入冲突决定并行:区域测试在文件和准备接口互不冲突时可并行;同一页面产品实现采用单写者。公共设施、全局索引有唯一维护者,各区域独立文件和分支,集成后以精确版本交接。
|
|
12
12
|
- 产品任务以本轮完整需求和case集合为输入,不指定按目录或case顺序逐一研发。已有工程先运行本轮范围测试,以失败及需求变化定位工作,按共因统一修复;改后验证失败项和受影响的已通过项。单写者仅限制多个产品节点的并发写入,不限制节点内部统筹全部需求。普通case失败不应阻断其他独立case的失败收集,公共设施失效则先修共因。
|
|
13
|
-
- 给执行者实际可访问的规则和工具,不把Owner已读过/Skill源码已改当成成员已获得。工程Skill按已推送Git原包传播并核实际内容;Owner
|
|
13
|
+
- 给执行者实际可访问的规则和工具,不把Owner已读过/Skill源码已改当成成员已获得。工程Skill按已推送Git原包传播并核实际内容;Owner规划规则不必整篇复制给执行者,本轮特有交付目标写入任务,通用交付要求由Skill承载。
|
|
14
14
|
- 任务应有范围内修复权限,普通测试红灯分清产品或设施责任,不因为一次失败就阻塞或新增节点。真正源冲突与缺少不可替代输入才升级。
|
|
15
15
|
|
|
16
16
|
## 新任务继承公共能力,而非依赖旧Agent记忆
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Owner先消化上游输入的不确定性:核定源版本,完成必要的编译、协议或目录生成及异常归因,准备实际可取的研发分支和生成物。首个设计阶段也基于明确分支与既定设计范围执行,不承担上游可用性探索。阶段内正常设计与实现判断仍归对应角色。正式交付物进入指定Git分支,运行证据、问题反馈和复盘进入指定共享目录。
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
任务分发只驱动阶段,不再编写一份研发手册。每个节点明确三件事:输入对象及精确版本、使用哪个Skill完成哪个阶段、交付到哪个Git分支或共享目录。存在业务分组时补充具体范围;不同节点可共用一份明确的版本清单,但不能仅写“自行看计划”而省略本节点输入对象。上游尚未完成时,写明所依赖的阶段产物,由检查点交接确认后的精确提交。
|
|
21
|
+
|
|
22
|
+
阶段职责、工具使用策略、门禁、结果判定、交付内容与复盘规则由对应Skill承载;公开命令和参数由工具说明承载。任务只提供这些资料可访问的冻结位置,不复制通用规则或逐条工具命令。Git分支和共享目录是交付承载位置,节点明确实际需要的目标即可,不为每个任务另造交付文件格式。
|
|
23
|
+
|
|
24
|
+
新Agent应能从节点直接找到业务输入、对应Skill和公开工具资料,并依此完成阶段。发现只有任务里的临时指令才能保证正确执行时,区分业务特有约束与通用规范缺口:前者保留在任务,后者修到Skill或工具,不继续堆长节点。
|
|
21
25
|
|
|
22
26
|
消费者先核入口可访问、满足当前交付目标;缺能力时给公共维护者具体缺口和使用场景,不自行复制算法或建立平行报告工具。已有工具即使工作正常,绕过它也属于消费与规划缺陷。Owner交付时核实际执行入口、输入身份和可访问产物,不以版本声明、文件存在或外观相似替代实际消费证据。
|
|
23
27
|
|
|
@@ -35,7 +39,7 @@
|
|
|
35
39
|
|
|
36
40
|
## 节点完成与Owner复盘
|
|
37
41
|
|
|
38
|
-
|
|
42
|
+
阶段交付包含短篇过程复盘,字段见[复盘模板](<task-retrospective.md>)。报告写任务共享证据区,最终由Owner持久归档,不能混入业务代码仓。无问题可以明确写无,不为模板制造问题。
|
|
39
43
|
|
|
40
44
|
Owner收尾时结合报告和真实执行记录核对:
|
|
41
45
|
- 总历时与关键路径,安装/有效建设/验证/等待/返工分开;并行节点时长不能直接相加当总历时。
|
|
@@ -55,9 +59,9 @@ Owner收尾时结合报告和真实执行记录核对:
|
|
|
55
59
|
|
|
56
60
|
规划要列出“已证问题 → 本轮改变 → 检查证据”,不能只附历史复盘链接。优先处理关键路径:若耗时主要是逐case构建启动,采用经验证的批量并行工具;覆盖编写可以按区域并行,统一产品后由一个验收节点调用工具,不为分区运行重复安排agent。并发度、资源及生命周期验证属于测试设施,具体方法由测试Skill维护。
|
|
57
61
|
|
|
58
|
-
交接使用小型摘要加独立明细引用:唯一SHA、范围原ID、case manifest
|
|
62
|
+
交接使用小型摘要加独立明细引用:唯一SHA、范围原ID、case manifest、准备接口与精确工作目录;运行原件不要多层重复嵌入。公开工具说明提供最小可运行用法,节点只交接其冻结位置,消费者不靠命名猜接口。原始完整输入仍保留,摘要不能删掉字段来源与边界。
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
冻结输入、兼容旧定义、依赖复用、失败共因归并及报告规则由本Skill及工具合同统一承载,任务仅声明本轮输入和交付目标。节点复盘核对是否还有源码漂移补跑、重复安装、输入截断补读和不必要串行等待;没有计时证据时不编造收益。通用规则发布并验证实际安装后再交消费者,本轮具体SHA和路径留在任务输入,不写死进通用Skill。
|
|
61
65
|
|
|
62
66
|
## 在研发前发现接入问题
|
|
63
67
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 全局参数与节点模板合同
|
|
2
|
+
|
|
3
|
+
参数、五阶段与检查点渲染由独立工具 `iteration render` 提供;目录差异检查由 `iteration diff-review` 提供。阶段字段及路径以随包元数据为准,Markdown模板用于审阅表达方式。
|
|
4
|
+
|
|
5
|
+
## 参数归属
|
|
6
|
+
|
|
7
|
+
迭代发起者用workflow Skill管理全局参数,[参数schema](<../resources/iteration.schema.json>)定义字段类型、必填性和扩展范围,[阶段元数据](<../resources/stage-meta.json>)定义五阶段输入和输出路径。Git地址、准备分支、冻结提交、仓库内业务目录bizdir、共享输出根为必填全局参数;节点不能重新填写或覆盖。每个阶段的工作分支在迭代实例中统一分配,上游交付由检查点解析为确定提交。
|
|
8
|
+
|
|
9
|
+
阶段元数据定义Skill、阶段说明、输入类型、允许输出目录和文件。模板主体固定,实例只提供全局参数及少量业务分组等扩展。输出位置是必填的派生结果,不得遗漏,也不得让执行者自行选择。
|
|
10
|
+
|
|
11
|
+
设计阶段的默认写入范围为:
|
|
12
|
+
|
|
13
|
+
- `{bizdir}/code/backend-contract/`:后端契约。
|
|
14
|
+
- `{bizdir}/code/db/`:必要逻辑表契约。
|
|
15
|
+
- `{bizdir}/code/identity-registry.json`:身份登记单文件权限,不开放整个code目录。
|
|
16
|
+
|
|
17
|
+
该范围依据设计与后端测试Skill的当前交付约定;不限定产物数量,也不为不存在的产物创建空目录。特殊项目布局须在迭代级明确配置并供审,不能用节点自由描述暗中扩大权限。
|
|
18
|
+
|
|
19
|
+
## Markdown渲染
|
|
20
|
+
|
|
21
|
+
所有字段按 `- 字段名:值` 渲染为Markdown列表,一行一个字段,不用表格,也不把多个字段拼成一段。说明工作策略、职责或审核判断时使用普通文本段落。该格式适用于全局参数、执行节点和检查点。
|
|
22
|
+
|
|
23
|
+
全局参数只在公共上下文定义,节点不重复定义Git仓库、全局基线与bizdir。阶段路径由全局参数展开;阶段交接版本是节点输入,不与全局基线混淆。
|
|
24
|
+
|
|
25
|
+
完整模板见[各阶段Markdown模板](<stage-templates.md>)。模板中的列表是真正独立的字段,不用一个“阶段输入”长句代替。无分组省略分组字段,仓内现状不另列“已有”字段;目录权限与文件权限分开。
|
|
26
|
+
|
|
27
|
+
相同参数、元数据版本及已验收输入须得到相同描述。执行前不能留下未解析依赖或占位符。节点只绑定明确的工作分支及已确认版本,另列Owner准备的冻结源、编译或生成产物。不重复枚举该分支内的契约、数据库设计、测试与产品目录;仓内输入输出语义由阶段Skill拥有。
|
|
28
|
+
|
|
29
|
+
## 交付路径检查
|
|
30
|
+
|
|
31
|
+
阶段交付和合入前,对明确基线与候选提交的完整Git差异检查允许路径,生成按目录统计的Markdown表及文件明细。统计新增、修改、删除、重命名文件和增删行;重命名同时检查旧、新路径,删除同样受权限约束。最终集成检查已接受阶段权限的并集。
|
|
32
|
+
|
|
33
|
+
业务路径须限定在bizdir内,共享路径限定在共享根内,拒绝路径穿越或符号链接逃逸。目录按路径段匹配,文件只精确匹配;读取权限不等于写入权限。越界变更须处理,不能自动扩白名单。即使目录合法,缓存、依赖、临时日志和过程报告等仍按对应Skill产物规则排除。
|
|
34
|
+
|
|
35
|
+
目录检查减少人工核范围的负担,不替代用户对diff内容的审阅。通用执行逻辑归独立工具集,不在Skill藏实现。
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 可重入的迭代阶段
|
|
39
|
+
|
|
40
|
+
所有阶段都是迭代研发,不假定全新开始。执行者从指定分支的当前内容出发,按Skill读取仓内输入、核对正式来源并建设或修订输出;复用仍有效成果,处理失效内容。阶段重入时先核已完成工作及输入版本,不能因重入默认清空或重复生成,也不能把旧产物存在当作已验证。
|
|
41
|
+
|
|
42
|
+
任务描述不使用“已有契约”“已有测试”等仓库状态字段,不复制Skill中的目录说明。阶段交接只需明确分支、已接受提交与额外准备物;外部输入不能靠执行者猜。输出权限仍由阶段元数据保留,交付路径检查使用这些权限,不因简化任务输入而放宽写入范围。
|
|
43
|
+
|
|
44
|
+
工作分支同时承载仓内输入和阶段研发成果,不再分别建模输入分支与交付分支。节点在输入处列一次工作分支;交付处列产物权限与任务信息目录。检查点固定实际交付提交,分支名不替代版本。
|
|
45
|
+
|
|
46
|
+
每个执行阶段统一执行 `iteration diff-review` 交付门禁;目前唯一判定是交付变更路径是否超出阶段允许范围,越界不得交付。不把其他内容审查要求或文件类型检查擅自加入此门禁,后续扩展另行明确。
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## Git与本地交付通道
|
|
50
|
+
|
|
51
|
+
Git交付目录/文件字段使用仓库相对路径,并标明Git归属;成果必须提交并推送到工作分支,以确定提交交接。不得将普通本地写入视为Git交付完成。
|
|
52
|
+
|
|
53
|
+
本地任务信息目录字段使用实际绝对路径,直接写入报告、证据与反馈,不提交Git。平台共享目录也是本地写入通道,不是Git目录;是否可共享、何时清理由平台合同决定。最终持久目录亦须明确本地归属。
|
|
54
|
+
|
|
55
|
+
当前统一目录门禁只检查Git提交之间的变更路径。不得把本地报告目录加入Git写入白名单,也不将本地目录检查暗中加入此门禁。
|
|
56
|
+
|
|
57
|
+
阶段模板只要求必须执行交付门禁,未通过不得作成功交付;具体检查项属于工具合同。目前实现仅检查Git目录范围,这是工具版本事实,不是对未来阶段要求的限制。
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
路径来源标记写在值上,字段名保持简短:`gitBranchPath:` 表示当前工作分支的仓库根,例如数据库设计目录为 `gitBranchPath:{bizdir}/code/db`;`localPath:/` 表示本地绝对路径。标记仅用于Markdown展示,schema和工具内部仍保存真实相对/绝对路径,不能把展示字符串直接当文件系统路径。提交推送与本地写入规则保持不变。
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"additionalProperties": false,
|
|
4
|
+
"properties": {
|
|
5
|
+
"schemaVersion": {
|
|
6
|
+
"const": 1
|
|
7
|
+
},
|
|
8
|
+
"metaVersion": {
|
|
9
|
+
"const": 1
|
|
10
|
+
},
|
|
11
|
+
"git": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"url": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1,
|
|
18
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
19
|
+
},
|
|
20
|
+
"branch": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1,
|
|
23
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
24
|
+
},
|
|
25
|
+
"commit": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"required": [
|
|
31
|
+
"url",
|
|
32
|
+
"branch",
|
|
33
|
+
"commit"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"bizdir": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)[^\\x00-\\x1f`{}]+$"
|
|
40
|
+
},
|
|
41
|
+
"source": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"properties": {
|
|
45
|
+
"root": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"minLength": 1,
|
|
48
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
49
|
+
},
|
|
50
|
+
"commit": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"required": [
|
|
56
|
+
"root",
|
|
57
|
+
"commit"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"sharedRoot": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"minLength": 1,
|
|
63
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
64
|
+
},
|
|
65
|
+
"skillsRoot": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1,
|
|
68
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
69
|
+
},
|
|
70
|
+
"toolsRoot": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 1,
|
|
73
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
74
|
+
},
|
|
75
|
+
"frameworkSkill": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 1,
|
|
78
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
79
|
+
},
|
|
80
|
+
"generated": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"properties": {
|
|
84
|
+
"catalog": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"minLength": 1,
|
|
87
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
88
|
+
},
|
|
89
|
+
"protocol": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"minLength": 1,
|
|
92
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
93
|
+
},
|
|
94
|
+
"preflight": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"minLength": 1,
|
|
97
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"required": [
|
|
101
|
+
"catalog",
|
|
102
|
+
"protocol",
|
|
103
|
+
"preflight"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"stages": {
|
|
107
|
+
"type": "array",
|
|
108
|
+
"minItems": 1,
|
|
109
|
+
"items": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"additionalProperties": false,
|
|
112
|
+
"properties": {
|
|
113
|
+
"id": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
|
|
116
|
+
},
|
|
117
|
+
"stage": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": [
|
|
120
|
+
"design",
|
|
121
|
+
"minifish-test",
|
|
122
|
+
"backend-test",
|
|
123
|
+
"minifish",
|
|
124
|
+
"backend"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
"sharedOutput": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"minLength": 1,
|
|
130
|
+
"pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)[^\\x00-\\x1f`{}]+$"
|
|
131
|
+
},
|
|
132
|
+
"acceptedInput": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"minLength": 1,
|
|
135
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
136
|
+
},
|
|
137
|
+
"inputCommit": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
140
|
+
},
|
|
141
|
+
"group": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"minLength": 1,
|
|
144
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
145
|
+
},
|
|
146
|
+
"workBranch": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"minLength": 1,
|
|
149
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"required": [
|
|
153
|
+
"id",
|
|
154
|
+
"stage",
|
|
155
|
+
"sharedOutput",
|
|
156
|
+
"acceptedInput",
|
|
157
|
+
"workBranch"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"persistentDeliveryDirectory": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"minLength": 1,
|
|
164
|
+
"pattern": "^[^\\x00-\\x1f`{}]+$"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"required": [
|
|
168
|
+
"schemaVersion",
|
|
169
|
+
"metaVersion",
|
|
170
|
+
"git",
|
|
171
|
+
"bizdir",
|
|
172
|
+
"source",
|
|
173
|
+
"sharedRoot",
|
|
174
|
+
"skillsRoot",
|
|
175
|
+
"toolsRoot",
|
|
176
|
+
"frameworkSkill",
|
|
177
|
+
"generated",
|
|
178
|
+
"stages",
|
|
179
|
+
"persistentDeliveryDirectory"
|
|
180
|
+
],
|
|
181
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
182
|
+
"title": "Saddle–Islands iteration parameters"
|
|
183
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"stages": {
|
|
4
|
+
"design": {
|
|
5
|
+
"label": "契约设计",
|
|
6
|
+
"skill": "saddle-islands-design",
|
|
7
|
+
"inputs": [
|
|
8
|
+
[
|
|
9
|
+
"业务输入目录",
|
|
10
|
+
"{source.root}/{bizdir}"
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
"官方测试目录文件",
|
|
14
|
+
"{generated.catalog}"
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
"上游协议文件",
|
|
18
|
+
"{generated.protocol}"
|
|
19
|
+
],
|
|
20
|
+
[
|
|
21
|
+
"输入预检结果",
|
|
22
|
+
"{generated.preflight}"
|
|
23
|
+
]
|
|
24
|
+
],
|
|
25
|
+
"outputDirectories": [
|
|
26
|
+
[
|
|
27
|
+
"契约目录",
|
|
28
|
+
"{bizdir}/code/backend-contract"
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
"数据库设计目录",
|
|
32
|
+
"{bizdir}/code/db"
|
|
33
|
+
]
|
|
34
|
+
],
|
|
35
|
+
"outputFiles": [
|
|
36
|
+
[
|
|
37
|
+
"身份登记文件",
|
|
38
|
+
"{bizdir}/code/identity-registry.json"
|
|
39
|
+
]
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"minifish-test": {
|
|
43
|
+
"label": "小程序测试研发",
|
|
44
|
+
"skill": "saddle-islands-minifish-test",
|
|
45
|
+
"inputs": [
|
|
46
|
+
[
|
|
47
|
+
"业务输入目录",
|
|
48
|
+
"{source.root}/{bizdir}"
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
"设计交付登记",
|
|
52
|
+
"{acceptedInput}"
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
"官方测试目录文件",
|
|
56
|
+
"{generated.catalog}"
|
|
57
|
+
]
|
|
58
|
+
],
|
|
59
|
+
"outputDirectories": [
|
|
60
|
+
[
|
|
61
|
+
"测试目录",
|
|
62
|
+
"{bizdir}/code/minifish-tests"
|
|
63
|
+
]
|
|
64
|
+
],
|
|
65
|
+
"outputFiles": []
|
|
66
|
+
},
|
|
67
|
+
"backend-test": {
|
|
68
|
+
"label": "后端测试研发",
|
|
69
|
+
"skill": "saddle-islands-backend-test",
|
|
70
|
+
"inputs": [
|
|
71
|
+
[
|
|
72
|
+
"业务输入目录",
|
|
73
|
+
"{source.root}/{bizdir}"
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
"设计交付登记",
|
|
77
|
+
"{acceptedInput}"
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
"上游协议文件",
|
|
81
|
+
"{generated.protocol}"
|
|
82
|
+
]
|
|
83
|
+
],
|
|
84
|
+
"outputDirectories": [
|
|
85
|
+
[
|
|
86
|
+
"测试目录",
|
|
87
|
+
"{bizdir}/code/backend-tests"
|
|
88
|
+
]
|
|
89
|
+
],
|
|
90
|
+
"outputFiles": []
|
|
91
|
+
},
|
|
92
|
+
"minifish": {
|
|
93
|
+
"label": "小程序研发",
|
|
94
|
+
"skill": "saddle-islands-minifish",
|
|
95
|
+
"inputs": [
|
|
96
|
+
[
|
|
97
|
+
"业务输入目录",
|
|
98
|
+
"{source.root}/{bizdir}"
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
"测试交付登记",
|
|
102
|
+
"{acceptedInput}"
|
|
103
|
+
]
|
|
104
|
+
],
|
|
105
|
+
"outputDirectories": [
|
|
106
|
+
[
|
|
107
|
+
"产品目录",
|
|
108
|
+
"{bizdir}/code/minifish"
|
|
109
|
+
]
|
|
110
|
+
],
|
|
111
|
+
"outputFiles": []
|
|
112
|
+
},
|
|
113
|
+
"backend": {
|
|
114
|
+
"label": "后端研发",
|
|
115
|
+
"skill": "saddle-islands-backend",
|
|
116
|
+
"inputs": [
|
|
117
|
+
[
|
|
118
|
+
"业务输入目录",
|
|
119
|
+
"{source.root}/{bizdir}"
|
|
120
|
+
],
|
|
121
|
+
[
|
|
122
|
+
"测试交付登记",
|
|
123
|
+
"{acceptedInput}"
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
"上游协议文件",
|
|
127
|
+
"{generated.protocol}"
|
|
128
|
+
]
|
|
129
|
+
],
|
|
130
|
+
"outputDirectories": [
|
|
131
|
+
[
|
|
132
|
+
"产品目录",
|
|
133
|
+
"{bizdir}/code/backend"
|
|
134
|
+
]
|
|
135
|
+
],
|
|
136
|
+
"outputFiles": []
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"checkpoint": {
|
|
140
|
+
"inputs": [
|
|
141
|
+
[
|
|
142
|
+
"阶段工作分支",
|
|
143
|
+
"{workBranch}"
|
|
144
|
+
],
|
|
145
|
+
[
|
|
146
|
+
"阶段任务信息目录",
|
|
147
|
+
"{stageOutput}"
|
|
148
|
+
]
|
|
149
|
+
],
|
|
150
|
+
"review": "按workflow审查阶段成果、工具消费、Skill改进需求及交付目录。通过后确认下游输入版本;未通过交对应责任方修复复验。",
|
|
151
|
+
"outputs": [
|
|
152
|
+
[
|
|
153
|
+
"下游输入登记目录",
|
|
154
|
+
"{sharedRoot}/inputs/accepted"
|
|
155
|
+
],
|
|
156
|
+
[
|
|
157
|
+
"审核记录目录",
|
|
158
|
+
"{sharedRoot}/deliverables/{id}-review"
|
|
159
|
+
]
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
"delivery": {
|
|
163
|
+
"inputs": [
|
|
164
|
+
[
|
|
165
|
+
"阶段交付信息目录",
|
|
166
|
+
"{sharedRoot}/deliverables"
|
|
167
|
+
]
|
|
168
|
+
],
|
|
169
|
+
"review": "按workflow完成交付总审,确认各阶段检查点结论及体系改进已交接,持久保存必要报告。合入另按用户授权。",
|
|
170
|
+
"outputs": [
|
|
171
|
+
[
|
|
172
|
+
"持久交付目录",
|
|
173
|
+
"{persistentDeliveryDirectory}"
|
|
174
|
+
]
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"deliveryGate": {
|
|
178
|
+
"label": "交付门禁",
|
|
179
|
+
"command": "iteration diff-review",
|
|
180
|
+
"scope": "交付前必须执行交付门禁;门禁未通过,不得作成功交付。"
|
|
181
|
+
},
|
|
182
|
+
"gitDeliveryInstruction": "Git成果提交并推送到工作分支;任务信息直接写入指定本地目录。"
|
|
183
|
+
}
|