@antprofuse/saddle-islands-workflow 0.1.1 → 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
|
@@ -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,12 @@ 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验收、真实联调和生产发布。持久保存必要且唯一的交付证据,清理失效入口;不重复归档缓存、不默认生成下载包,不以编译或数量替代业务正确性。
|
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}`
|
|
@@ -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,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
|
+
}
|