cowork-flow 0.0.37 → 0.0.39
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/README.md +27 -14
- package/package.json +1 -1
- package/src/commands/init.js +39 -28
- package/src/commands/sync.js +2 -2
- package/src/lib/asset-plan.js +127 -0
- package/src/lib/copy-template.js +101 -141
- package/src/lib/host-assets.js +231 -0
- package/src/lib/plan-applier.js +329 -0
- package/src/lib/platforms.js +15 -76
- package/src/lib/skill-registry.js +503 -0
- package/template/.claude/agents/cowork-check.md +10 -1
- package/template/.claude/agents/cowork-implement.md +11 -2
- package/template/.claude/hooks/inject-workflow-state.py +51 -254
- package/template/.codex/agents/cowork-check.toml +12 -3
- package/template/.codex/agents/cowork-implement.toml +11 -2
- package/template/.codex/agents/default.toml +3 -2
- package/template/.codex/agents/explorer.toml +3 -2
- package/template/.codex/agents/worker.toml +2 -1
- package/template/.codex/hooks/inject-workflow-state.py +46 -265
- package/template/.cowork-flow/.version +1 -1
- package/template/.cowork-flow/scripts/application/__init__.py +1 -0
- package/template/.cowork-flow/scripts/application/batch_execution.py +743 -0
- package/template/.cowork-flow/scripts/application/runtime_context_service.py +365 -0
- package/template/.cowork-flow/scripts/application/task_archive.py +220 -0
- package/template/.cowork-flow/scripts/application/task_context.py +765 -0
- package/template/.cowork-flow/scripts/application/task_creation.py +201 -0
- package/template/.cowork-flow/scripts/application/task_lifecycle.py +532 -0
- package/template/.cowork-flow/scripts/application/task_tree.py +179 -0
- package/template/.cowork-flow/scripts/commands/doctor.py +78 -57
- package/template/.cowork-flow/scripts/commands/party_mode_v2.py +671 -425
- package/template/.cowork-flow/scripts/commands/subagent.py +38 -26
- package/template/.cowork-flow/scripts/commands/task.py +535 -1953
- package/template/.cowork-flow/scripts/commands/task_archive_commands.py +195 -0
- package/template/.cowork-flow/scripts/commands/task_context_commands.py +240 -0
- package/template/.cowork-flow/scripts/commands/task_create_command.py +164 -0
- package/template/.cowork-flow/scripts/commands/task_navigation.py +407 -0
- package/template/.cowork-flow/scripts/commands/task_parser.py +364 -0
- package/template/.cowork-flow/scripts/commands/task_support.py +76 -0
- package/template/.cowork-flow/scripts/commands/task_tree_commands.py +160 -0
- package/template/.cowork-flow/scripts/common/core/execution_context.py +161 -85
- package/template/.cowork-flow/scripts/common/core/host_manifest.py +393 -0
- package/template/.cowork-flow/scripts/common/core/skill_registry.py +568 -0
- package/template/.cowork-flow/scripts/common/gates/coding_standards.py +58 -7
- package/template/.cowork-flow/scripts/common/gates/gates.py +323 -46
- package/template/.cowork-flow/scripts/common/gates/models.py +196 -0
- package/template/.cowork-flow/scripts/common/gates/registry.py +79 -0
- package/template/.cowork-flow/scripts/common/gates/tdd_evidence.py +13 -13
- package/template/.cowork-flow/scripts/common/gates/validate_coding_standards.py +104 -62
- package/template/.cowork-flow/scripts/common/gates/validate_implementation.py +39 -22
- package/template/.cowork-flow/scripts/common/gates/validate_rules.py +223 -40
- package/template/.cowork-flow/scripts/common/git/git_context.py +216 -182
- package/template/.cowork-flow/scripts/common/host/__init__.py +1 -0
- package/template/.cowork-flow/scripts/common/host/workflow_state_hook.py +303 -0
- package/template/.cowork-flow/scripts/common/storage/__init__.py +1 -0
- package/template/.cowork-flow/scripts/common/storage/operation_log.py +72 -0
- package/template/.cowork-flow/scripts/common/storage/state_store.py +279 -0
- package/template/.cowork-flow/scripts/common/storage/unit_of_work.py +214 -0
- package/template/.cowork-flow/scripts/common/task/active_task.py +93 -135
- package/template/.cowork-flow/scripts/common/task/batch_mode.py +33 -120
- package/template/.cowork-flow/scripts/common/task/decision_review.py +85 -0
- package/template/.cowork-flow/scripts/common/task/readiness.py +9 -15
- package/template/.cowork-flow/scripts/common/task/task_repository.py +156 -0
- package/template/.cowork-flow/scripts/run.py +24 -0
- package/template/.cowork-flow/spec/contracts/decision-anchor.md +8 -2
- package/template/.cowork-flow/spec/contracts/subagent-dispatch.md +2 -4
- package/template/.cowork-flow/spec/contracts/workflow-state-templates.md +1 -1
- package/template/.cowork-flow/spec/protocols/decision-review.md +28 -0
- package/template/.cowork-flow/spec/protocols/review.md +34 -0
- package/template/.cowork-flow/spec/protocols/spec-maintenance.md +16 -0
- package/template/.cowork-flow/spec/protocols/tdd.md +30 -0
- package/template/.cowork-flow/spec/references/definition-of-done.md +4 -4
- package/template/.cowork-flow/spec/references/orchestration-patterns.md +1 -1
- package/template/.cowork-flow/spec/runtime/contract-registry.json +25 -0
- package/template/.cowork-flow/spec/runtime/host-assets.json +214 -0
- package/template/.cowork-flow/spec/runtime/index.md +8 -0
- package/template/.cowork-flow/spec/runtime/rules.json +61 -10
- package/template/.cowork-flow/spec/runtime/skill-registry.json +397 -0
- package/template/.cowork-flow/spec/schemas/host-assets.schema.json +173 -0
- package/template/.cowork-flow/spec/schemas/rules.schema.json +10 -1
- package/template/.cowork-flow/spec/schemas/skill-registry.schema.json +202 -0
- package/template/.cowork-flow/workflow.md +18 -13
- package/template/.opencode/agents/cowork-check.md +11 -0
- package/template/.opencode/agents/cowork-implement.md +16 -1
- package/template/.zcode/.zcode-plugin/plugin.json +1 -1
- package/template/.zcode/hooks/inject-context.js +3 -85
- package/template/.zcode/hooks/inject-context.selfcheck.mjs +6 -6
- package/template/.zcode/scaffold/.cowork-flow/spec/contracts/decision-anchor.md +8 -2
- package/template/.zcode/scaffold/.cowork-flow/spec/contracts/subagent-dispatch.md +2 -4
- package/template/.zcode/scaffold/.cowork-flow/spec/runtime/rules.json +61 -10
- package/template/.zcode/scaffold/.cowork-flow/spec/schemas/rules.schema.json +10 -1
- package/template/.zcode/scaffold/.cowork-flow/workflow.md +18 -13
- package/template/.zcode/scaffold/AGENTS.md +18 -8
- package/template/AGENTS.md +1 -1
- package/template/skills/batch-mode/SKILL.md +140 -76
- package/template/skills/brainstorming/SKILL.md +2 -2
- package/template/skills/cowork-flow/SKILL.md +42 -0
- package/template/skills/party-mode/SHARED-BOUNDARIES.md +1 -1
- package/template/skills/party-mode/SKILL.md +48 -119
- package/template/.cowork-flow/scripts/common/gates/spec_validator.py +0 -53
- package/template/.cowork-flow/scripts/common/gates/validate_jsonl.py +0 -32
- package/template/skills/before-dev/SKILL.md +0 -41
- package/template/skills/check/SKILL.md +0 -53
- package/template/skills/check/simplification-guide.md +0 -47
- package/template/skills/continue/SKILL.md +0 -29
- package/template/skills/doubt-review/SKILL.md +0 -118
- package/template/skills/finish-work/SKILL.md +0 -32
- package/template/skills/party-mode-v2/SKILL.md +0 -75
- package/template/skills/start/SKILL.md +0 -78
- package/template/skills/tdd/SKILL.md +0 -74
- package/template/skills/update-spec/SKILL.md +0 -39
- package/template/skills/using-cowork-flow/SKILL.md +0 -80
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"capabilityValues": [
|
|
4
|
+
"native",
|
|
5
|
+
"shim",
|
|
6
|
+
"plugin",
|
|
7
|
+
"external",
|
|
8
|
+
"experimental",
|
|
9
|
+
"unsupported"
|
|
10
|
+
],
|
|
11
|
+
"platforms": [
|
|
12
|
+
{
|
|
13
|
+
"id": "codex",
|
|
14
|
+
"displayName": "Codex",
|
|
15
|
+
"aliases": [
|
|
16
|
+
"codex"
|
|
17
|
+
],
|
|
18
|
+
"detectAny": [
|
|
19
|
+
".codex"
|
|
20
|
+
],
|
|
21
|
+
"assetPrefixes": [
|
|
22
|
+
".codex/",
|
|
23
|
+
".cowork-flow/adapters/codex/"
|
|
24
|
+
],
|
|
25
|
+
"assetFiles": [],
|
|
26
|
+
"skillTarget": ".agents/skills",
|
|
27
|
+
"adapterPath": ".cowork-flow/adapters/codex/adapter.yaml",
|
|
28
|
+
"capabilities": {
|
|
29
|
+
"dispatchSubagent": "native",
|
|
30
|
+
"freshChildContext": "native",
|
|
31
|
+
"sendFollowup": "native",
|
|
32
|
+
"waitChild": "native",
|
|
33
|
+
"listChildren": "native",
|
|
34
|
+
"cancelChild": "native",
|
|
35
|
+
"stateInjection": "native",
|
|
36
|
+
"backgroundChild": "native",
|
|
37
|
+
"runtimeContextDispatch": "native",
|
|
38
|
+
"runtimeContextBinding": "shim",
|
|
39
|
+
"runtimeContextCleanup": "native"
|
|
40
|
+
},
|
|
41
|
+
"commandTargets": [
|
|
42
|
+
{
|
|
43
|
+
"config": ".codex/hooks.json",
|
|
44
|
+
"format": "json",
|
|
45
|
+
"target": ".codex/hooks/inject-workflow-state.py"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "opencode",
|
|
51
|
+
"displayName": "OpenCode",
|
|
52
|
+
"aliases": [
|
|
53
|
+
"opencode"
|
|
54
|
+
],
|
|
55
|
+
"detectAny": [
|
|
56
|
+
".opencode"
|
|
57
|
+
],
|
|
58
|
+
"assetPrefixes": [
|
|
59
|
+
".opencode/",
|
|
60
|
+
".cowork-flow/adapters/opencode/"
|
|
61
|
+
],
|
|
62
|
+
"assetFiles": [],
|
|
63
|
+
"skillTarget": ".agents/skills",
|
|
64
|
+
"adapterPath": ".cowork-flow/adapters/opencode/adapter.yaml",
|
|
65
|
+
"capabilities": {
|
|
66
|
+
"dispatchSubagent": "native",
|
|
67
|
+
"freshChildContext": "native",
|
|
68
|
+
"sendFollowup": "shim",
|
|
69
|
+
"waitChild": "native",
|
|
70
|
+
"listChildren": "native",
|
|
71
|
+
"cancelChild": "native",
|
|
72
|
+
"stateInjection": "plugin",
|
|
73
|
+
"backgroundChild": "experimental",
|
|
74
|
+
"runtimeContextDispatch": "native",
|
|
75
|
+
"runtimeContextBinding": "shim",
|
|
76
|
+
"runtimeContextCleanup": "native"
|
|
77
|
+
},
|
|
78
|
+
"commandTargets": []
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "claude-code",
|
|
82
|
+
"displayName": "Claude Code",
|
|
83
|
+
"aliases": [
|
|
84
|
+
"claude-code",
|
|
85
|
+
"claude",
|
|
86
|
+
"claudecode"
|
|
87
|
+
],
|
|
88
|
+
"detectAny": [
|
|
89
|
+
".claude",
|
|
90
|
+
"CLAUDE.md"
|
|
91
|
+
],
|
|
92
|
+
"assetPrefixes": [
|
|
93
|
+
".claude/",
|
|
94
|
+
".cowork-flow/adapters/claude-code/"
|
|
95
|
+
],
|
|
96
|
+
"assetFiles": [
|
|
97
|
+
"CLAUDE.md"
|
|
98
|
+
],
|
|
99
|
+
"skillTarget": ".claude/skills",
|
|
100
|
+
"adapterPath": ".cowork-flow/adapters/claude-code/adapter.yaml",
|
|
101
|
+
"capabilities": {
|
|
102
|
+
"dispatchSubagent": "native",
|
|
103
|
+
"freshChildContext": "native",
|
|
104
|
+
"sendFollowup": "native",
|
|
105
|
+
"waitChild": "native",
|
|
106
|
+
"listChildren": "native",
|
|
107
|
+
"cancelChild": "native",
|
|
108
|
+
"stateInjection": "external",
|
|
109
|
+
"backgroundChild": "native",
|
|
110
|
+
"runtimeContextDispatch": "native",
|
|
111
|
+
"runtimeContextBinding": "shim",
|
|
112
|
+
"runtimeContextCleanup": "native"
|
|
113
|
+
},
|
|
114
|
+
"commandTargets": [
|
|
115
|
+
{
|
|
116
|
+
"config": ".claude/settings.json",
|
|
117
|
+
"format": "json",
|
|
118
|
+
"target": ".claude/hooks/inject-workflow-state.py"
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"excludedPrefixes": [
|
|
124
|
+
"skills/",
|
|
125
|
+
".zcode/"
|
|
126
|
+
],
|
|
127
|
+
"syncPolicy": {
|
|
128
|
+
"protectedFiles": [
|
|
129
|
+
".cowork-flow/config.yaml"
|
|
130
|
+
],
|
|
131
|
+
"protectedPrefixes": [
|
|
132
|
+
".cowork-flow/spec/",
|
|
133
|
+
".cowork-flow/workspace/",
|
|
134
|
+
".cowork-flow/tasks/",
|
|
135
|
+
".cowork-flow/changes/",
|
|
136
|
+
".cowork-flow/plans/"
|
|
137
|
+
],
|
|
138
|
+
"safeFiles": [
|
|
139
|
+
".cowork-flow/.gitignore",
|
|
140
|
+
".cowork-flow/.version",
|
|
141
|
+
".cowork-flow/run",
|
|
142
|
+
".cowork-flow/run.cmd",
|
|
143
|
+
".cowork-flow/spec/runtime/rules.json",
|
|
144
|
+
".cowork-flow/spec/runtime/skill-registry.json",
|
|
145
|
+
".cowork-flow/spec/schemas/skill-registry.schema.json",
|
|
146
|
+
".cowork-flow/spec/contracts/workflow-state-templates.md"
|
|
147
|
+
],
|
|
148
|
+
"safePrefixes": [
|
|
149
|
+
".cowork-flow/"
|
|
150
|
+
],
|
|
151
|
+
"managedBlockFiles": [
|
|
152
|
+
"AGENTS.md",
|
|
153
|
+
"CLAUDE.md"
|
|
154
|
+
],
|
|
155
|
+
"obsoleteFiles": [
|
|
156
|
+
".cowork-flow/project-context.md",
|
|
157
|
+
".cowork-flow/scripts/add_session.py",
|
|
158
|
+
".cowork-flow/scripts/change.py",
|
|
159
|
+
".cowork-flow/scripts/doctor.py",
|
|
160
|
+
".cowork-flow/scripts/get_context.py",
|
|
161
|
+
".cowork-flow/scripts/get_developer.py",
|
|
162
|
+
".cowork-flow/scripts/init_developer.py",
|
|
163
|
+
".cowork-flow/scripts/party_mode_v2.py",
|
|
164
|
+
".cowork-flow/scripts/project_context.py",
|
|
165
|
+
".cowork-flow/scripts/resume.py",
|
|
166
|
+
".cowork-flow/scripts/subagent.py",
|
|
167
|
+
".cowork-flow/scripts/task.py",
|
|
168
|
+
".cowork-flow/scripts/common/active_task.py",
|
|
169
|
+
".cowork-flow/scripts/common/archive_utils.py",
|
|
170
|
+
".cowork-flow/scripts/common/coding_standards.py",
|
|
171
|
+
".cowork-flow/scripts/common/config.py",
|
|
172
|
+
".cowork-flow/scripts/common/developer.py",
|
|
173
|
+
".cowork-flow/scripts/common/execution_context.py",
|
|
174
|
+
".cowork-flow/scripts/common/files.py",
|
|
175
|
+
".cowork-flow/scripts/common/gates.py",
|
|
176
|
+
".cowork-flow/scripts/common/git_context.py",
|
|
177
|
+
".cowork-flow/scripts/common/git_snapshot.py",
|
|
178
|
+
".cowork-flow/scripts/common/paths.py",
|
|
179
|
+
".cowork-flow/scripts/common/readiness.py",
|
|
180
|
+
".cowork-flow/scripts/common/state_machine.py",
|
|
181
|
+
".cowork-flow/scripts/common/task_utils.py",
|
|
182
|
+
".cowork-flow/scripts/common/tdd_evidence.py",
|
|
183
|
+
".cowork-flow/scripts/common/test_intent.py",
|
|
184
|
+
".cowork-flow/scripts/common/validate_coding_standards.py",
|
|
185
|
+
".cowork-flow/scripts/common/validate_implementation.py",
|
|
186
|
+
".cowork-flow/scripts/common/validate_rules.py",
|
|
187
|
+
".cowork-flow/scripts/common/gates/spec_validator.py",
|
|
188
|
+
".cowork-flow/scripts/common/gates/validate_jsonl.py",
|
|
189
|
+
".cowork-flow/spec/contracts/entry-contract.md",
|
|
190
|
+
".agents/skills/before-dev",
|
|
191
|
+
".agents/skills/check",
|
|
192
|
+
".agents/skills/continue",
|
|
193
|
+
".agents/skills/doubt-review",
|
|
194
|
+
".agents/skills/entry-boundary",
|
|
195
|
+
".agents/skills/finish-work",
|
|
196
|
+
".agents/skills/party-mode-v2",
|
|
197
|
+
".agents/skills/start",
|
|
198
|
+
".agents/skills/tdd",
|
|
199
|
+
".agents/skills/update-spec",
|
|
200
|
+
".agents/skills/using-cowork-flow",
|
|
201
|
+
".claude/skills/before-dev",
|
|
202
|
+
".claude/skills/check",
|
|
203
|
+
".claude/skills/continue",
|
|
204
|
+
".claude/skills/doubt-review",
|
|
205
|
+
".claude/skills/entry-boundary",
|
|
206
|
+
".claude/skills/finish-work",
|
|
207
|
+
".claude/skills/party-mode-v2",
|
|
208
|
+
".claude/skills/start",
|
|
209
|
+
".claude/skills/tdd",
|
|
210
|
+
".claude/skills/update-spec",
|
|
211
|
+
".claude/skills/using-cowork-flow"
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
- `rules.json`: workflow rule 元数据单源。执行器可以按 rule id 做事实判断,
|
|
6
6
|
但 violation 的 `message`、`severity`、`fix_hint` 和来源信息必须来自这里。
|
|
7
7
|
- `contract-registry.json`: hook/plugin 注入 contract digest 的注册表。
|
|
8
|
+
- `host-assets.json`: 宿主平台、资产归属、技能目标、同步保护策略和旧资产迁移清单的单源;结构由 `../schemas/host-assets.schema.json` 约束。
|
|
8
9
|
|
|
9
10
|
缺少或损坏的 runtime 文件不能静默放行关键门禁。宿主插件可使用最小 fallback
|
|
10
11
|
避免崩溃,但必须在 digest 中暴露 warning;doctor/tests 负责发现缺失。
|
|
12
|
+
|
|
13
|
+
运行时写入边界:
|
|
14
|
+
|
|
15
|
+
- 命令层通过 `scripts/application/` 调用任务与 runtime context 用例。
|
|
16
|
+
- JSON 状态通过 `scripts/common/storage/` 读写并显式使用 UTF-8。
|
|
17
|
+
- init/sync 通过 Asset Plan、staging、备份和 rollback 提交资产,版本文件最后更新。
|
|
18
|
+
- 旧状态只允许在带迁移测试的读取边界兼容;新写入必须使用当前 schema 和权威路径。
|
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
"fix_hint": "创建 .cowork-flow/changes/<slug>/proposal.md 并填写目标、用户价值、范围边界",
|
|
12
12
|
"source_file": ".cowork-flow/workflow.md",
|
|
13
13
|
"source_excerpt": "定义 L1(增量)、L2(结构性)和 L3(重大)三级工作",
|
|
14
|
-
"enforcement": "validate_rules"
|
|
14
|
+
"enforcement": "validate_rules",
|
|
15
|
+
"validator": "runtime.l2_required_file",
|
|
16
|
+
"parameters": {
|
|
17
|
+
"filename": "proposal.md"
|
|
18
|
+
}
|
|
15
19
|
},
|
|
16
20
|
{
|
|
17
21
|
"id": "R-WF-002",
|
|
@@ -23,7 +27,11 @@
|
|
|
23
27
|
"fix_hint": "创建 .cowork-flow/changes/<slug>/spec.md 并填写功能规格",
|
|
24
28
|
"source_file": ".cowork-flow/workflow.md",
|
|
25
29
|
"source_excerpt": "L2(结构性)",
|
|
26
|
-
"enforcement": "validate_rules"
|
|
30
|
+
"enforcement": "validate_rules",
|
|
31
|
+
"validator": "runtime.l2_required_file",
|
|
32
|
+
"parameters": {
|
|
33
|
+
"filename": "spec.md"
|
|
34
|
+
}
|
|
27
35
|
},
|
|
28
36
|
{
|
|
29
37
|
"id": "R-WF-003",
|
|
@@ -35,7 +43,11 @@
|
|
|
35
43
|
"fix_hint": "创建 .cowork-flow/changes/<slug>/design.md 并填写技术设计",
|
|
36
44
|
"source_file": ".cowork-flow/workflow.md",
|
|
37
45
|
"source_excerpt": "L2(结构性)",
|
|
38
|
-
"enforcement": "validate_rules"
|
|
46
|
+
"enforcement": "validate_rules",
|
|
47
|
+
"validator": "runtime.l2_required_file",
|
|
48
|
+
"parameters": {
|
|
49
|
+
"filename": "design.md"
|
|
50
|
+
}
|
|
39
51
|
},
|
|
40
52
|
{
|
|
41
53
|
"id": "R-WF-004",
|
|
@@ -47,7 +59,9 @@
|
|
|
47
59
|
"fix_hint": "在 change.yaml 中添加 plan 字段指向 .cowork-flow/plans/ 下的计划文件",
|
|
48
60
|
"source_file": ".cowork-flow/workflow.md",
|
|
49
61
|
"source_excerpt": "L2(结构性)",
|
|
50
|
-
"enforcement": "validate_rules"
|
|
62
|
+
"enforcement": "validate_rules",
|
|
63
|
+
"validator": "runtime.l2_plan_link",
|
|
64
|
+
"parameters": {}
|
|
51
65
|
},
|
|
52
66
|
{
|
|
53
67
|
"id": "R-WF-005",
|
|
@@ -59,7 +73,25 @@
|
|
|
59
73
|
"fix_hint": "在 change.yaml 中添加 tasks 字段指向相关任务目录",
|
|
60
74
|
"source_file": ".cowork-flow/workflow.md",
|
|
61
75
|
"source_excerpt": "L2(结构性)",
|
|
62
|
-
"enforcement": "validate_rules"
|
|
76
|
+
"enforcement": "validate_rules",
|
|
77
|
+
"validator": "runtime.l2_task_link",
|
|
78
|
+
"parameters": {}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "R-WF-006",
|
|
82
|
+
"type": "phase_gate",
|
|
83
|
+
"severity": "block",
|
|
84
|
+
"scope": "task_start",
|
|
85
|
+
"condition": "L2 任务必须有有效的 decision-review.jsonl",
|
|
86
|
+
"message": "L2 decision review evidence is missing or invalid",
|
|
87
|
+
"fix_hint": "按 .cowork-flow/spec/protocols/decision-review.md 写入已接受的结构化记录",
|
|
88
|
+
"source_file": ".cowork-flow/spec/protocols/decision-review.md",
|
|
89
|
+
"source_excerpt": "L2 task start requires accepted structured decision evidence",
|
|
90
|
+
"enforcement": "validate_rules",
|
|
91
|
+
"validator": "runtime.l2_decision_review",
|
|
92
|
+
"parameters": {
|
|
93
|
+
"filename": "decision-review.jsonl"
|
|
94
|
+
}
|
|
63
95
|
},
|
|
64
96
|
{
|
|
65
97
|
"id": "R-WF-007",
|
|
@@ -71,7 +103,13 @@
|
|
|
71
103
|
"fix_hint": "运行 ./.cowork-flow/run task review [task-dir] 进入检查阶段,然后运行验证命令",
|
|
72
104
|
"source_file": ".cowork-flow/workflow.md",
|
|
73
105
|
"source_excerpt": "先验证再完成",
|
|
74
|
-
"enforcement": "validate_rules"
|
|
106
|
+
"enforcement": "validate_rules",
|
|
107
|
+
"validator": "runtime.task_status",
|
|
108
|
+
"parameters": {
|
|
109
|
+
"allowed_statuses": [
|
|
110
|
+
"review"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
75
113
|
},
|
|
76
114
|
{
|
|
77
115
|
"id": "R-WF-008",
|
|
@@ -83,7 +121,14 @@
|
|
|
83
121
|
"fix_hint": "创建 <task-dir>/decision-anchor.md,至少包含 ## 目标和 ## 验收标准",
|
|
84
122
|
"source_file": ".cowork-flow/spec/contracts/decision-anchor.md",
|
|
85
123
|
"source_excerpt": "每个任务必须有决策锚点",
|
|
86
|
-
"enforcement": "validate_rules"
|
|
124
|
+
"enforcement": "validate_rules",
|
|
125
|
+
"validator": "runtime.decision_anchor",
|
|
126
|
+
"parameters": {
|
|
127
|
+
"required_sections": [
|
|
128
|
+
"目标",
|
|
129
|
+
"验收标准"
|
|
130
|
+
]
|
|
131
|
+
}
|
|
87
132
|
},
|
|
88
133
|
{
|
|
89
134
|
"id": "R-AG-002",
|
|
@@ -95,7 +140,9 @@
|
|
|
95
140
|
"fix_hint": "规格文件只能由主会话修改,子代理应专注于实现任务",
|
|
96
141
|
"source_file": ".cowork-flow/spec/contracts/subagent-dispatch.md",
|
|
97
142
|
"source_excerpt": "cowork-* 固定代理是叶子执行者",
|
|
98
|
-
"enforcement": "validate_implementation"
|
|
143
|
+
"enforcement": "validate_implementation",
|
|
144
|
+
"validator": "implementation.spec_files",
|
|
145
|
+
"parameters": {}
|
|
99
146
|
},
|
|
100
147
|
{
|
|
101
148
|
"id": "R-AG-005",
|
|
@@ -107,7 +154,9 @@
|
|
|
107
154
|
"fix_hint": "通过 ./.cowork-flow/run task add-context <dir> implement <path> <reason> 登记所有需要修改的文件",
|
|
108
155
|
"source_file": ".cowork-flow/spec/contracts/decision-anchor.md",
|
|
109
156
|
"source_excerpt": "implement.jsonl 是任务的权威文件白名单",
|
|
110
|
-
"enforcement": "validate_implementation"
|
|
157
|
+
"enforcement": "validate_implementation",
|
|
158
|
+
"validator": "implementation.allowed_files",
|
|
159
|
+
"parameters": {}
|
|
111
160
|
},
|
|
112
161
|
{
|
|
113
162
|
"id": "R-AG-006",
|
|
@@ -119,7 +168,9 @@
|
|
|
119
168
|
"fix_hint": "保持代码简单直接,只有在确认需要复用时才进行抽象",
|
|
120
169
|
"source_file": "AGENTS.md",
|
|
121
170
|
"source_excerpt": "不为一次性代码做抽象",
|
|
122
|
-
"enforcement": "validate_implementation"
|
|
171
|
+
"enforcement": "validate_implementation",
|
|
172
|
+
"validator": "implementation.premature_abstraction",
|
|
173
|
+
"parameters": {}
|
|
123
174
|
}
|
|
124
175
|
]
|
|
125
176
|
}
|