@abelxiaoxing/cadence 1.3.0 → 1.4.1
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 +172 -13
- package/agents/design-explorer.md +17 -11
- package/agents/diagnosis-worker.md +9 -1
- package/agents/implementation-worker.md +3 -1
- package/config/plan-draft.example.json +122 -0
- package/config/plan-draft.multiple-tasks.example.json +345 -0
- package/package.json +9 -5
- package/prompts/abel-design.md +141 -38
- package/prompts/abel-diagnose.md +10 -1
- package/prompts/abel-implement.md +118 -20
- package/prompts/abel-init.md +9 -2
- package/src/activity-contracts.ts +82 -0
- package/src/apply-transaction.ts +16 -14
- package/src/artifact-store.ts +17 -0
- package/src/candidate-artifact.ts +143 -0
- package/src/candidate-patch.ts +33 -12
- package/src/candidate-workspace.ts +74 -0
- package/src/canonical.ts +16 -0
- package/src/change-contract-schema.ts +191 -0
- package/src/change-contract.ts +273 -0
- package/src/change-verification.ts +896 -0
- package/src/child-model.ts +129 -0
- package/src/child-session.ts +296 -328
- package/src/contracts.ts +325 -109
- package/src/control-contracts.ts +51 -1
- package/src/delivery-compiler.ts +241 -141
- package/src/delivery-revision.ts +42 -0
- package/src/design-control.ts +182 -15
- package/src/design-diagnostics.ts +150 -0
- package/src/design-journal.ts +216 -72
- package/src/durable-contracts.ts +210 -0
- package/src/durable-workflow.ts +963 -0
- package/src/evidence-draft.ts +122 -0
- package/src/implement-graph.ts +14 -16
- package/src/implement-plan.ts +70 -0
- package/src/index.ts +341 -1405
- package/src/isolation-backend.ts +84 -23
- package/src/model-source.ts +22 -0
- package/src/package-candidate.ts +224 -0
- package/src/package-delivery.ts +486 -0
- package/src/package-verification.ts +509 -0
- package/src/package-workflow.ts +253 -0
- package/src/packet-runtime.ts +27 -48
- package/src/parent-provider.ts +86 -198
- package/src/phase-execution.ts +2248 -0
- package/src/pi-adapter.ts +19 -0
- package/src/plan-draft-summary.ts +146 -0
- package/src/plan-draft.ts +493 -0
- package/src/route-policy.ts +1 -11
- package/src/run-state.ts +4 -16
- package/src/run-store.ts +5 -144
- package/src/scoped-grep-worker.mjs +23 -0
- package/src/scoped-tools.ts +312 -116
- package/src/sqlite-schema.ts +171 -0
- package/src/storage-schema.ts +352 -0
- package/src/subagent-activity.ts +46 -67
- package/src/submit-tool.ts +40 -61
- package/src/task-ledger.ts +14 -55
- package/src/transport-budget.ts +32 -0
- package/src/verification-capability.ts +298 -102
- package/src/verification-environment.ts +213 -0
- package/src/verification-identity.ts +77 -0
- package/src/worker-broker.ts +134 -91
- package/src/workflow-engine.ts +28 -8285
- package/src/workflow-policy.ts +1388 -0
- package/src/workflow-recovery-policy.ts +95 -0
- package/src/workflow-scheduling.ts +105 -0
- package/src/workflow-state-machine.ts +4086 -0
- package/src/workflow-status.ts +384 -0
- package/src/workspace-io-entry.mjs +58 -0
- package/src/workspace-io-worker.mjs +991 -0
- package/src/workspace-io.ts +84 -0
- package/src/workspace-store.ts +125 -19
- package/skills/abel-workflow/SKILL.md +0 -205
- package/src/empty-resource-loader.ts +0 -38
- package/src/parent-payload-bridge.ts +0 -523
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
{
|
|
2
|
+
"changeContract": {
|
|
3
|
+
"goal": "Fix integer addition and doubling through add",
|
|
4
|
+
"acceptance": [
|
|
5
|
+
{
|
|
6
|
+
"id": "integer-addition",
|
|
7
|
+
"statement": "add(2, 3) returns 5 and add(0, 0) remains 0",
|
|
8
|
+
"verification": {
|
|
9
|
+
"kind": "static-check",
|
|
10
|
+
"id": "add-acceptance",
|
|
11
|
+
"runner": {
|
|
12
|
+
"kind": "node",
|
|
13
|
+
"script": "test/add.test.mjs"
|
|
14
|
+
},
|
|
15
|
+
"args": [],
|
|
16
|
+
"classification": "expected-green"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "integer-double",
|
|
21
|
+
"statement": "double(3) returns 6 via add(3, 3)",
|
|
22
|
+
"verification": {
|
|
23
|
+
"kind": "steps",
|
|
24
|
+
"id": "double-green",
|
|
25
|
+
"classification": "expected-green",
|
|
26
|
+
"steps": [
|
|
27
|
+
{
|
|
28
|
+
"kind": "static-check",
|
|
29
|
+
"id": "double-green-add",
|
|
30
|
+
"runner": {
|
|
31
|
+
"kind": "node",
|
|
32
|
+
"script": "test/add.test.mjs"
|
|
33
|
+
},
|
|
34
|
+
"args": [],
|
|
35
|
+
"classification": "expected-green"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"kind": "static-check",
|
|
39
|
+
"id": "double-green-own",
|
|
40
|
+
"runner": {
|
|
41
|
+
"kind": "node",
|
|
42
|
+
"script": "test/double.test.mjs"
|
|
43
|
+
},
|
|
44
|
+
"args": [],
|
|
45
|
+
"classification": "expected-green"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"constraints": [
|
|
52
|
+
{
|
|
53
|
+
"id": "no-dependencies",
|
|
54
|
+
"statement": "Keep the existing function signature and add no dependencies"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"policy": {
|
|
58
|
+
"writeRoots": [
|
|
59
|
+
"src/add.mjs",
|
|
60
|
+
"test/add.test.mjs",
|
|
61
|
+
"src/double.mjs",
|
|
62
|
+
"test/double.test.mjs"
|
|
63
|
+
],
|
|
64
|
+
"dependencies": [],
|
|
65
|
+
"verificationModes": ["behavior"]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"changeId": "fix-add-and-double",
|
|
69
|
+
"tasks": [
|
|
70
|
+
{
|
|
71
|
+
"taskId": "fix-add",
|
|
72
|
+
"dependsOn": [],
|
|
73
|
+
"objective": "Preserve the existing zero assertion; add a failing positive-integer assertion with [ADD:positive-integers], then fix addition",
|
|
74
|
+
"context": {
|
|
75
|
+
"agents": "No AGENTS.md in this example consumer; use the actual repository instructions when adapting",
|
|
76
|
+
"contract": "Gate A integer-addition acceptance; only src/add.mjs and test/add.test.mjs may change"
|
|
77
|
+
},
|
|
78
|
+
"roots": ["."],
|
|
79
|
+
"phases": {
|
|
80
|
+
"red": {
|
|
81
|
+
"write": ["test/add.test.mjs"],
|
|
82
|
+
"delete": [],
|
|
83
|
+
"verification": {
|
|
84
|
+
"use": "add-test",
|
|
85
|
+
"expectedFailure": "[ADD:positive-integers]"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"green": {
|
|
89
|
+
"write": ["src/add.mjs"],
|
|
90
|
+
"delete": [],
|
|
91
|
+
"verification": {
|
|
92
|
+
"use": "add-test"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"affectedVerification": {
|
|
97
|
+
"use": "add-test"
|
|
98
|
+
},
|
|
99
|
+
"repairVerification": {
|
|
100
|
+
"use": "add-test"
|
|
101
|
+
},
|
|
102
|
+
"scheduling": {
|
|
103
|
+
"conflicts": [],
|
|
104
|
+
"resources": []
|
|
105
|
+
},
|
|
106
|
+
"agents": {
|
|
107
|
+
"impact": "none"
|
|
108
|
+
},
|
|
109
|
+
"approvedDependencies": [],
|
|
110
|
+
"impactClosure": {
|
|
111
|
+
"changedSurfaces": ["none"],
|
|
112
|
+
"searchEvidence": [
|
|
113
|
+
"Example consumer: src/add.mjs exports add; test/add.test.mjs is its only caller and existing test"
|
|
114
|
+
],
|
|
115
|
+
"relatedTests": [
|
|
116
|
+
{
|
|
117
|
+
"path": "test/add.test.mjs",
|
|
118
|
+
"evidence": "Existing add(0, 0) assertion passes; preserve it while adding the positive-integer regression"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"affectedSuite": ["test/add.test.mjs"]
|
|
122
|
+
},
|
|
123
|
+
"read": ["package.json", "src/add.mjs", "test/add.test.mjs"]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"taskId": "fix-double",
|
|
127
|
+
"dependsOn": ["fix-add"],
|
|
128
|
+
"objective": "Keep double(0) passing; add the [DOUBLE:positive-integers] failure then use add(value, value)",
|
|
129
|
+
"context": {
|
|
130
|
+
"agents": "No AGENTS.md in this example consumer; use the actual repository instructions when adapting",
|
|
131
|
+
"contract": "Gate A integer-double acceptance; depends on corrected addition"
|
|
132
|
+
},
|
|
133
|
+
"roots": ["."],
|
|
134
|
+
"phases": {
|
|
135
|
+
"red": {
|
|
136
|
+
"write": ["test/double.test.mjs"],
|
|
137
|
+
"delete": [],
|
|
138
|
+
"verification": {
|
|
139
|
+
"kind": "steps",
|
|
140
|
+
"id": "double-red",
|
|
141
|
+
"classification": "expected-red",
|
|
142
|
+
"steps": [
|
|
143
|
+
{
|
|
144
|
+
"kind": "static-check",
|
|
145
|
+
"id": "double-red-add",
|
|
146
|
+
"runner": {
|
|
147
|
+
"kind": "node",
|
|
148
|
+
"script": "test/add.test.mjs"
|
|
149
|
+
},
|
|
150
|
+
"args": [],
|
|
151
|
+
"classification": "expected-green"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"kind": "static-check",
|
|
155
|
+
"id": "double-red-own",
|
|
156
|
+
"runner": {
|
|
157
|
+
"kind": "node",
|
|
158
|
+
"script": "test/double.test.mjs"
|
|
159
|
+
},
|
|
160
|
+
"args": [],
|
|
161
|
+
"classification": "expected-red",
|
|
162
|
+
"expectedFailure": "[DOUBLE:positive-integers]"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"green": {
|
|
168
|
+
"write": ["src/double.mjs"],
|
|
169
|
+
"delete": [],
|
|
170
|
+
"verification": {
|
|
171
|
+
"kind": "steps",
|
|
172
|
+
"id": "double-green",
|
|
173
|
+
"classification": "expected-green",
|
|
174
|
+
"steps": [
|
|
175
|
+
{
|
|
176
|
+
"kind": "static-check",
|
|
177
|
+
"id": "double-green-add",
|
|
178
|
+
"runner": {
|
|
179
|
+
"kind": "node",
|
|
180
|
+
"script": "test/add.test.mjs"
|
|
181
|
+
},
|
|
182
|
+
"args": [],
|
|
183
|
+
"classification": "expected-green"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"kind": "static-check",
|
|
187
|
+
"id": "double-green-own",
|
|
188
|
+
"runner": {
|
|
189
|
+
"kind": "node",
|
|
190
|
+
"script": "test/double.test.mjs"
|
|
191
|
+
},
|
|
192
|
+
"args": [],
|
|
193
|
+
"classification": "expected-green"
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"affectedVerification": {
|
|
200
|
+
"kind": "steps",
|
|
201
|
+
"id": "double-affectedVerification",
|
|
202
|
+
"classification": "expected-green",
|
|
203
|
+
"steps": [
|
|
204
|
+
{
|
|
205
|
+
"kind": "static-check",
|
|
206
|
+
"id": "double-green-add-affectedVerification",
|
|
207
|
+
"runner": {
|
|
208
|
+
"kind": "node",
|
|
209
|
+
"script": "test/add.test.mjs"
|
|
210
|
+
},
|
|
211
|
+
"args": [],
|
|
212
|
+
"classification": "expected-green"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"kind": "static-check",
|
|
216
|
+
"id": "double-green-own-affectedVerification",
|
|
217
|
+
"runner": {
|
|
218
|
+
"kind": "node",
|
|
219
|
+
"script": "test/double.test.mjs"
|
|
220
|
+
},
|
|
221
|
+
"args": [],
|
|
222
|
+
"classification": "expected-green"
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"repairVerification": {
|
|
227
|
+
"kind": "steps",
|
|
228
|
+
"id": "double-repairVerification",
|
|
229
|
+
"classification": "expected-green",
|
|
230
|
+
"steps": [
|
|
231
|
+
{
|
|
232
|
+
"kind": "static-check",
|
|
233
|
+
"id": "double-green-add-repairVerification",
|
|
234
|
+
"runner": {
|
|
235
|
+
"kind": "node",
|
|
236
|
+
"script": "test/add.test.mjs"
|
|
237
|
+
},
|
|
238
|
+
"args": [],
|
|
239
|
+
"classification": "expected-green"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"kind": "static-check",
|
|
243
|
+
"id": "double-green-own-repairVerification",
|
|
244
|
+
"runner": {
|
|
245
|
+
"kind": "node",
|
|
246
|
+
"script": "test/double.test.mjs"
|
|
247
|
+
},
|
|
248
|
+
"args": [],
|
|
249
|
+
"classification": "expected-green"
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
"scheduling": {
|
|
254
|
+
"conflicts": [],
|
|
255
|
+
"resources": []
|
|
256
|
+
},
|
|
257
|
+
"agents": {
|
|
258
|
+
"impact": "none"
|
|
259
|
+
},
|
|
260
|
+
"approvedDependencies": [],
|
|
261
|
+
"impactClosure": {
|
|
262
|
+
"changedSurfaces": ["none"],
|
|
263
|
+
"searchEvidence": [
|
|
264
|
+
"Example consumer: double imports add; each has an existing zero assertion; all.test.mjs imports both test files"
|
|
265
|
+
],
|
|
266
|
+
"relatedTests": [
|
|
267
|
+
{
|
|
268
|
+
"path": "test/add.test.mjs",
|
|
269
|
+
"evidence": "Producer task owns the addition regression, checked before the double regression"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"path": "test/double.test.mjs",
|
|
273
|
+
"evidence": "Preserve the existing double(0) assertion while adding double(3)"
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
"affectedSuite": ["test/add.test.mjs", "test/double.test.mjs"]
|
|
277
|
+
},
|
|
278
|
+
"read": [
|
|
279
|
+
"package.json",
|
|
280
|
+
"src/add.mjs",
|
|
281
|
+
"test/add.test.mjs",
|
|
282
|
+
"src/double.mjs",
|
|
283
|
+
"test/double.test.mjs"
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
"outputs": [
|
|
288
|
+
{
|
|
289
|
+
"id": "add-regression",
|
|
290
|
+
"path": "test/add.test.mjs",
|
|
291
|
+
"producer": {
|
|
292
|
+
"taskId": "fix-add",
|
|
293
|
+
"phase": "red"
|
|
294
|
+
},
|
|
295
|
+
"postcondition": "regular-file"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"verification": {
|
|
299
|
+
"baseline": {
|
|
300
|
+
"fullSuite": {
|
|
301
|
+
"use": "full-suite"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"change": {
|
|
305
|
+
"fullSuite": {
|
|
306
|
+
"use": "full-suite"
|
|
307
|
+
},
|
|
308
|
+
"postApply": {
|
|
309
|
+
"use": "full-suite"
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"artifactCorrection": {
|
|
313
|
+
"maxAttempts": 2
|
|
314
|
+
},
|
|
315
|
+
"repair": {
|
|
316
|
+
"maxAttempts": 1
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"verificationDefinitions": {
|
|
320
|
+
"add-test": {
|
|
321
|
+
"kind": "static-check",
|
|
322
|
+
"runner": {
|
|
323
|
+
"kind": "node",
|
|
324
|
+
"script": "test/add.test.mjs"
|
|
325
|
+
},
|
|
326
|
+
"args": []
|
|
327
|
+
},
|
|
328
|
+
"full-suite": {
|
|
329
|
+
"kind": "static-check",
|
|
330
|
+
"runner": {
|
|
331
|
+
"kind": "node",
|
|
332
|
+
"script": "test/all.test.mjs"
|
|
333
|
+
},
|
|
334
|
+
"args": []
|
|
335
|
+
},
|
|
336
|
+
"double-test": {
|
|
337
|
+
"kind": "static-check",
|
|
338
|
+
"runner": {
|
|
339
|
+
"kind": "node",
|
|
340
|
+
"script": "test/double.test.mjs"
|
|
341
|
+
},
|
|
342
|
+
"args": []
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abelxiaoxing/cadence",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Four explicit Abel workflow prompts with stage-isolated design and diagnosis, durable resumable implementation, and three package-owned professional Agents.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,16 +40,19 @@
|
|
|
40
40
|
"pack:check": "node scripts/pack-check.mjs",
|
|
41
41
|
"traceability:check": "node scripts/traceability-check.mjs",
|
|
42
42
|
"verify": "bun run check && bun run lint && bun run test && bun run pack:check",
|
|
43
|
-
"check": "node scripts/check-syntax.mjs && tsc --noEmit",
|
|
43
|
+
"check": "node scripts/check-syntax.mjs && bun scripts/build-workspace-io.mjs --check && tsc --noEmit",
|
|
44
44
|
"lint": "biome check . && rumdl check .",
|
|
45
45
|
"test": "vitest run",
|
|
46
46
|
"test:target": "vitest run",
|
|
47
|
-
"check:agents": "node scripts/check-agents.mjs"
|
|
47
|
+
"check:agents": "node scripts/check-agents.mjs",
|
|
48
|
+
"build:workspace-io": "bun scripts/build-workspace-io.mjs",
|
|
49
|
+
"eval:workflow": "node --experimental-strip-types scripts/evaluate-workflow.mjs"
|
|
48
50
|
},
|
|
49
51
|
"peerDependencies": {
|
|
50
52
|
"@earendil-works/pi-coding-agent": "*",
|
|
51
53
|
"@earendil-works/pi-tui": "*",
|
|
52
|
-
"typebox": "*"
|
|
54
|
+
"typebox": "*",
|
|
55
|
+
"@earendil-works/pi-ai": "*"
|
|
53
56
|
},
|
|
54
57
|
"devDependencies": {
|
|
55
58
|
"@biomejs/biome": "^2.4.16",
|
|
@@ -58,7 +61,8 @@
|
|
|
58
61
|
"@types/node": "^22.15.3",
|
|
59
62
|
"rumdl": "^0.2.10",
|
|
60
63
|
"typescript": "^6.0.3",
|
|
61
|
-
"vitest": "^4.1.8"
|
|
64
|
+
"vitest": "^4.1.8",
|
|
65
|
+
"@earendil-works/pi-ai": "0.84.3"
|
|
62
66
|
},
|
|
63
67
|
"repository": {
|
|
64
68
|
"type": "git",
|