@surlymochan/evalid 0.0.0-stage → 0.3.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.
Files changed (192) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/LICENSE +21 -0
  3. package/README.md +315 -2
  4. package/RELEASE_NOTES.md +102 -0
  5. package/atoms/registry.json +758 -0
  6. package/bin/xflow.js +7208 -0
  7. package/docs/adoption/README.md +128 -0
  8. package/docs/adoption/openflow-release-hardening.md +61 -0
  9. package/docs/benchmark-openflow-vs-gstack-superpowers-openspec-2026-05-25.md +81 -0
  10. package/docs/compatibility.md +52 -0
  11. package/docs/competitive-benchmark.md +108 -0
  12. package/docs/corps-operator-guide.md +75 -0
  13. package/docs/demo-proof.md +126 -0
  14. package/docs/examples-gallery.md +115 -0
  15. package/docs/fixtures/tracker-item.json +7 -0
  16. package/docs/goal-vs-codex.md +129 -0
  17. package/docs/gstack-comparison.md +88 -0
  18. package/docs/install-upgrade.md +133 -0
  19. package/docs/integrations.md +49 -0
  20. package/docs/launch-demo.md +123 -0
  21. package/docs/launch-dossier.md +180 -0
  22. package/docs/methodology.md +149 -0
  23. package/docs/npm-publish-handoff.md +83 -0
  24. package/docs/openspec-migration.md +106 -0
  25. package/docs/public-benchmark.md +68 -0
  26. package/docs/public-release.md +145 -0
  27. package/docs/quality-assessment.md +139 -0
  28. package/docs/quickstart.md +156 -0
  29. package/docs/reviewer-guide.md +43 -0
  30. package/docs/spec-kit-benchmark.md +73 -0
  31. package/docs/super-assistant-comparison.md +106 -0
  32. package/docs/superpowers-comparison.md +82 -0
  33. package/docs/team-adoption.md +123 -0
  34. package/docs/tooling-matrix.md +91 -0
  35. package/docs/walkthrough.md +76 -0
  36. package/docs/workflow-manual.md +1125 -0
  37. package/package.json +83 -4
  38. package/prompts/pencil-draft.md +46 -0
  39. package/prompts/pencil-refine.md +46 -0
  40. package/prompts/phase-artifact.md +24 -0
  41. package/prompts/phase-execution.md +32 -0
  42. package/schemas/competitor-reconstruction-contract.schema.json +91 -0
  43. package/schemas/llm-design-review-aggregate.schema.json +83 -0
  44. package/schemas/visual-benchmark.schema.json +978 -0
  45. package/schemas/workflow.schema.json +100 -0
  46. package/scripts/run-tests.mjs +23 -0
  47. package/scripts/takein_digest.py +139 -0
  48. package/specs/README.md +118 -0
  49. package/specs/architecture.md +36 -0
  50. package/specs/product.md +33 -0
  51. package/specs/workflow.md +349 -0
  52. package/src/agent_team/atoms/codex-app-bridge.js +8 -0
  53. package/src/agent_team/atoms/design/competitor-reconstruction-review.js +44 -0
  54. package/src/agent_team/atoms/design/contract-freeze.js +8 -0
  55. package/src/agent_team/atoms/design/generation-contract.js +442 -0
  56. package/src/agent_team/atoms/design/reconstruction-pack.js +246 -0
  57. package/src/agent_team/atoms/design/reference-surface-lock.js +49 -0
  58. package/src/agent_team/atoms/patch-challenge.js +19 -0
  59. package/src/agent_team/atoms/pencil/accept.js +9 -0
  60. package/src/agent_team/atoms/pencil/draft.js +365 -0
  61. package/src/agent_team/atoms/pencil/refine.js +229 -0
  62. package/src/agent_team/atoms/phase-run-dispatch.js +8 -0
  63. package/src/agent_team/atoms/team-run.js +380 -0
  64. package/src/agent_team/atoms/visual/aesthetic-review.js +231 -0
  65. package/src/agent_team/atoms/visual/benchmark-repair-plan.js +291 -0
  66. package/src/agent_team/atoms/visual/benchmark.js +1652 -0
  67. package/src/agent_team/atoms/visual/design-selection.js +23 -0
  68. package/src/agent_team/atoms/visual/direction-synthesis.js +124 -0
  69. package/src/agent_team/atoms/visual/dom-rect-export.js +129 -0
  70. package/src/agent_team/atoms/visual/image-diff.js +186 -0
  71. package/src/agent_team/atoms/visual/layout-competition.js +8 -0
  72. package/src/agent_team/atoms/visual/page-evidence-capture.js +806 -0
  73. package/src/agent_team/atoms/visual/playwright-runtime.js +8 -0
  74. package/src/agent_team/atoms/visual/review-aggregate.js +87 -0
  75. package/src/agent_team/atoms/visual/review.js +77 -0
  76. package/src/agent_team/atoms/visual/visual-report.js +197 -0
  77. package/src/agent_team/atoms/visual/visual-token-export.js +417 -0
  78. package/src/agent_team/common.js +311 -0
  79. package/src/core/atoms/agent-invoke.js +684 -0
  80. package/src/core/atoms/event/ingest.js +30 -0
  81. package/src/core/atoms/experience/digest.js +55 -0
  82. package/src/core/atoms/gate/artifact-verify.js +83 -0
  83. package/src/core/atoms/gate/competitor-contract-validate.js +119 -0
  84. package/src/core/atoms/gate/evidence-collect.js +64 -0
  85. package/src/core/atoms/gate/payload-from-phase-run.js +78 -0
  86. package/src/core/atoms/gate/visual-benchmark-validate.js +183 -0
  87. package/src/core/atoms/gate/workbench.js +79 -0
  88. package/src/core/atoms/intake/classify.js +15 -0
  89. package/src/core/atoms/intake/design-skill-select.js +16 -0
  90. package/src/core/atoms/intake/preview-or-refine.js +19 -0
  91. package/src/core/atoms/intake/recommend.js +20 -0
  92. package/src/core/atoms/intake/research-same-category.js +19 -0
  93. package/src/core/atoms/intervention/create.js +30 -0
  94. package/src/core/atoms/memory/manage.js +27 -0
  95. package/src/core/atoms/memory/mount.js +13 -0
  96. package/src/core/atoms/mission/create.js +19 -0
  97. package/src/core/atoms/mission/list.js +14 -0
  98. package/src/core/atoms/mission/show.js +26 -0
  99. package/src/core/atoms/notify/checkpoint.js +46 -0
  100. package/src/core/atoms/phase-run/complete.js +42 -0
  101. package/src/core/atoms/phase-run/fail.js +40 -0
  102. package/src/core/atoms/phase-run/persist.js +39 -0
  103. package/src/core/atoms/phase-run/start.js +30 -0
  104. package/src/core/atoms/plugin/run.js +76 -0
  105. package/src/core/atoms/policy/gate.js +90 -0
  106. package/src/core/atoms/policy/resolve.js +11 -0
  107. package/src/core/atoms/storage/sync.js +57 -0
  108. package/src/core/atoms/workflow/advance.js +25 -0
  109. package/src/core/atoms/workflow/guard.js +127 -0
  110. package/src/core/atoms/workflow/state-load.js +37 -0
  111. package/src/core/bindings.js +37 -0
  112. package/src/core/change-artifacts.js +134 -0
  113. package/src/core/competitive-score.js +265 -0
  114. package/src/core/concurrency-policy.js +35 -0
  115. package/src/core/execution-log.js +108 -0
  116. package/src/core/intake-recommendation.js +134 -0
  117. package/src/core/memory-state.js +62 -0
  118. package/src/core/mission-state.js +780 -0
  119. package/src/core/pending-gates.js +66 -0
  120. package/src/core/phase-cost.js +116 -0
  121. package/src/core/phase-run-read.js +27 -0
  122. package/src/core/policy-overlay.js +180 -0
  123. package/src/core/state-store.js +201 -0
  124. package/src/core/workflow-executor.js +998 -0
  125. package/src/core/workflow-integrity.js +111 -0
  126. package/src/core/workflow-loader.js +163 -0
  127. package/src/core/workflow-rerun.js +84 -0
  128. package/src/core/workflow-state.js +119 -0
  129. package/src/server.js +1307 -0
  130. package/workflows/corps.yaml +479 -0
  131. package/workflows/yolo.yaml +233 -0
  132. package/xflow/README.md +76 -0
  133. package/xflow/aha/SKILL.md +82 -0
  134. package/xflow/aha/scripts/append_aha.py +50 -0
  135. package/xflow/archive/scripts/archive_change.py +338 -0
  136. package/xflow/archive/templates/merge-design.md +54 -0
  137. package/xflow/archive/templates/merge-workflow.md +26 -0
  138. package/xflow/atoms/__init__.py +6 -0
  139. package/xflow/atoms/a1_issue_create_or_patch.py +70 -0
  140. package/xflow/atoms/a2_branch_create_and_link.py +42 -0
  141. package/xflow/atoms/a3_repo_doctor.py +11 -0
  142. package/xflow/atoms/a4_project_set_status.py +11 -0
  143. package/xflow/atoms/a5_archive_commit_push_close.py +11 -0
  144. package/xflow/atoms/a6_pr_create.py +72 -0
  145. package/xflow/atoms/b1_change_scaffold.py +11 -0
  146. package/xflow/atoms/b2_status_read.py +16 -0
  147. package/xflow/atoms/b2b_status_write.py +20 -0
  148. package/xflow/atoms/b3_status_transition.py +27 -0
  149. package/xflow/atoms/b4_handoff_scaffold_or_refresh.py +11 -0
  150. package/xflow/atoms/b5_aha_append.py +11 -0
  151. package/xflow/atoms/b6_takein_digest.py +11 -0
  152. package/xflow/atoms/b6b_lookback_digest.py +11 -0
  153. package/xflow/atoms/b7_change_mission_bind.py +43 -0
  154. package/xflow/atoms/c1_mem.py +54 -0
  155. package/xflow/atoms/e6_gate_local_precheck.py +23 -0
  156. package/xflow/atoms/h1_design_lite_gate.py +74 -0
  157. package/xflow/atoms/i6a_tdd_run.py +104 -0
  158. package/xflow/atoms/i6b_tdd_proof_validate.py +165 -0
  159. package/xflow/atoms/i6c_tdd_quality_review.py +357 -0
  160. package/xflow/atoms/j1_tests_run.py +129 -0
  161. package/xflow/atoms/j4a_spec_consistency_structural.py +105 -0
  162. package/xflow/atoms/j4b_spec_delta_review.py +316 -0
  163. package/xflow/atoms/j4c_openspec_migration_map.py +121 -0
  164. package/xflow/atoms/j4d_spec_clarify_gate.py +373 -0
  165. package/xflow/atoms/j6_cr_review.py +443 -0
  166. package/xflow/atoms/k1_artifacts_complete_check.py +39 -0
  167. package/xflow/atoms/k2_merge_snippets_apply.py +11 -0
  168. package/xflow/atoms/k3_handoff_refresh.py +14 -0
  169. package/xflow/atoms/k4_mem_lesson_persist.py +65 -0
  170. package/xflow/atoms/k5_archive_publish.py +21 -0
  171. package/xflow/atoms/k6_aha_merge.py +42 -0
  172. package/xflow/atoms/tdd_lib.py +747 -0
  173. package/xflow/corps/SKILL.md +109 -0
  174. package/xflow/exec/scripts/set_issue_in_progress.py +159 -0
  175. package/xflow/goal/SKILL.md +150 -0
  176. package/xflow/handoff/SKILL.md +95 -0
  177. package/xflow/handoff/scripts/scaffold_handoff.py +304 -0
  178. package/xflow/lookback/SKILL.md +66 -0
  179. package/xflow/lookback/scripts/lookback_digest.py +46 -0
  180. package/xflow/openissue/scripts/open_issue_flow.py +438 -0
  181. package/xflow/plan/SKILL.md +38 -0
  182. package/xflow/ralph/SKILL.md +123 -0
  183. package/xflow/scripts/check_installed_xflow_skill_sync.sh +44 -0
  184. package/xflow/scripts/common.py +480 -0
  185. package/xflow/scripts/doctor.py +278 -0
  186. package/xflow/scripts/sync_installed_xflow_skill.sh +134 -0
  187. package/xflow/takein/SKILL.md +81 -0
  188. package/xflow/takein/scripts/takein_digest.py +88 -0
  189. package/xflow/yolo/SKILL.md +66 -0
  190. package/xflow/yolo/scripts/scaffold_specs_change.py +673 -0
  191. package/xflow/yolo/scripts/yolo_gate.py +312 -0
  192. package/xflow/yolo/templates/DESIGN.md +179 -0
@@ -0,0 +1,479 @@
1
+ name: corps
2
+ version: 1
3
+ description: >
4
+ Heavy multi-agent delivery workflow for complex user-facing products.
5
+ Requires evalid HTTP server, GitHub CLI, and Pencil.
6
+ Full 28-phase pipeline covering research → decomposition → design loop → execution → gate_final → archive.
7
+ track: heavy
8
+ parallel:
9
+ max_agents: 3
10
+ policy: weighted
11
+ requires:
12
+ agentos_bin: true
13
+ agentos_http: true
14
+ gh: true
15
+ pencil: true
16
+
17
+ phases:
18
+ - id: change-init
19
+ label: "01 · Change init"
20
+ catalog_ref: 1
21
+ required: true
22
+ atoms:
23
+ - id: B1.change.scaffold
24
+ with: { change_type: "${input.change_type}", title: "${input.title}" }
25
+ - id: D1.mission.create
26
+ with: { goal: "${input.title}", workspace: "${input.workspace}" }
27
+ - id: B7.change_mission.bind
28
+ with: { direction: "change_to_mission" }
29
+ - id: B2b.status.write
30
+ with:
31
+ fields:
32
+ current_stage: "change-init"
33
+ status: "draft"
34
+ archival_status: "not_ready"
35
+ artifacts:
36
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
37
+ gate:
38
+ type: artifact-verify
39
+ on_fail: stop
40
+
41
+ - id: explore
42
+ label: "02 · Explore"
43
+ catalog_ref: 2
44
+ required: true
45
+ atoms:
46
+ - id: G3.research.same_category
47
+ - id: G2.intake.classify
48
+ - id: D3a.phase_run.start
49
+ with: { phase: "explore" }
50
+ - id: I1b.team.run.structured
51
+ with: { phase: "explore" }
52
+ - id: D3c.phase_run.complete
53
+ artifacts:
54
+ - { path: "specs/changes/${change_id}/explore.json", optional: false }
55
+ gate:
56
+ type: llm-judge
57
+ on_fail: stop
58
+
59
+ - id: brainstorm
60
+ label: "03 · Brainstorm"
61
+ catalog_ref: 3
62
+ required: true
63
+ atoms:
64
+ - id: D3a.phase_run.start
65
+ with: { phase: "brainstorm" }
66
+ - id: I1b.team.run.structured
67
+ with: { phase: "brainstorm" }
68
+ - id: D3c.phase_run.complete
69
+ artifacts:
70
+ - { path: "specs/changes/${change_id}/brainstorm.json", optional: false }
71
+ gate:
72
+ type: llm-judge
73
+ on_fail: stop
74
+
75
+ - id: risk_review
76
+ label: "04 · Risk review"
77
+ catalog_ref: 4
78
+ required: true
79
+ atoms:
80
+ - id: D3a.phase_run.start
81
+ with: { phase: "risk_review" }
82
+ - id: I1b.team.run.structured
83
+ with: { phase: "risk_review" }
84
+ - id: D3c.phase_run.complete
85
+ artifacts:
86
+ - { path: "specs/changes/${change_id}/risk_review.json", optional: false }
87
+ gate:
88
+ type: llm-judge
89
+ on_fail: stop
90
+
91
+ - id: clarify
92
+ label: "05 · Clarify"
93
+ catalog_ref: 5
94
+ required: true
95
+ atoms:
96
+ - id: D3a.phase_run.start
97
+ with: { phase: "clarify" }
98
+ - id: I1b.team.run.structured
99
+ with: { phase: "clarify" }
100
+ - id: D3c.phase_run.complete
101
+ artifacts:
102
+ - { path: "specs/changes/${change_id}/clarify.json", optional: false }
103
+ gate:
104
+ type: human
105
+ on_fail: stop
106
+
107
+ - id: proposal
108
+ label: "06 · Proposal"
109
+ catalog_ref: 6
110
+ required: true
111
+ atoms:
112
+ - id: D3a.phase_run.start
113
+ with: { phase: "proposal" }
114
+ - id: I1b.team.run.structured
115
+ with: { phase: "proposal" }
116
+ - id: J5.gate.evidence_collect
117
+ - id: E4.gate.payload_from_phase_run
118
+ - id: D3c.phase_run.complete
119
+ - id: B3.status.transition
120
+ with: { to_stage: "proposal-freeze" }
121
+ artifacts:
122
+ - { path: "specs/changes/${change_id}/proposal.md", optional: false }
123
+ - { path: "specs/changes/${change_id}/proposal.json", optional: false }
124
+ gate:
125
+ type: artifact-verify
126
+ on_fail: stop
127
+
128
+ - id: proposal-consistency-check
129
+ label: "07 · Proposal consistency check"
130
+ catalog_ref: 7
131
+ required: true
132
+ atoms:
133
+ - id: J4a.spec_consistency.structural
134
+ - id: J4d.spec_clarify.gate
135
+ artifacts:
136
+ - { path: "specs/changes/${change_id}/spec_clarify.json", optional: true }
137
+ gate:
138
+ type: deterministic
139
+ atom: J4d.spec_clarify.gate
140
+ on_fail: stop
141
+
142
+ - id: design_contract_freeze
143
+ label: "08 · Design contract freeze"
144
+ catalog_ref: 8
145
+ required: true
146
+ atoms:
147
+ - id: G4.design_skill.select
148
+ - id: H2.design.contract_freeze
149
+ artifacts:
150
+ - { path: "specs/changes/${change_id}/design_contract.json", optional: false }
151
+ gate:
152
+ type: artifact-verify
153
+ on_fail: stop
154
+
155
+ - id: competitor_reconstruction_review
156
+ label: "09 · Competitor reconstruction review"
157
+ catalog_ref: 9
158
+ required: true
159
+ atoms:
160
+ - id: H2b.design.competitor_reconstruction_review
161
+ - id: H2d.design.reference_surface_lock
162
+ - id: H2e.design.reconstruction_pack
163
+ - id: H2f.design.generation_contract
164
+ artifacts:
165
+ - { path: "specs/changes/${change_id}/competitor_reconstruction_review.json", optional: false }
166
+ - { path: "specs/changes/${change_id}/reference_surface_lock.json", optional: false }
167
+ - { path: "specs/changes/${change_id}/reconstruction_pack.json", optional: false }
168
+ - { path: "specs/changes/${change_id}/generation_contract.json", optional: false }
169
+ - { path: "specs/changes/${change_id}/design_system_pack.json", optional: false }
170
+ gate:
171
+ type: deterministic
172
+ atom: H2c.design.competitor_contract_validate
173
+ on_fail: stop
174
+
175
+ - id: visual_direction_synthesis
176
+ label: "10 · Visual direction synthesis"
177
+ catalog_ref: 10
178
+ required: true
179
+ atoms:
180
+ - id: H3a.visual.direction_synthesis
181
+ artifacts:
182
+ - { path: "specs/changes/${change_id}/visual_direction_synthesis.json", optional: false }
183
+ - { path: "specs/changes/${change_id}/image_reference_set.json", optional: false }
184
+ gate:
185
+ type: llm-judge
186
+ on_fail: stop
187
+
188
+ - id: layout_competition
189
+ label: "11 · Layout competition"
190
+ catalog_ref: 11
191
+ required: true
192
+ atoms:
193
+ - id: H3b.visual.layout_competition
194
+ artifacts:
195
+ - { path: "specs/changes/${change_id}/layout_competition.json", optional: false }
196
+ gate:
197
+ type: llm-judge
198
+ on_fail: stop
199
+
200
+ - id: design_selection
201
+ label: "12 · Design selection"
202
+ catalog_ref: 12
203
+ required: true
204
+ atoms:
205
+ - id: H3c.visual.design_selection
206
+ artifacts:
207
+ - { path: "specs/changes/${change_id}/design_selection.json", optional: false }
208
+ gate:
209
+ type: human
210
+ on_fail: stop
211
+
212
+ - id: ux_design_brief
213
+ label: "13 · UX design brief"
214
+ catalog_ref: 13
215
+ required: true
216
+ atoms:
217
+ - id: D3a.phase_run.start
218
+ with: { phase: "ux_design_brief" }
219
+ - id: I1b.team.run.structured
220
+ with: { phase: "ux_design_brief" }
221
+ - id: D3c.phase_run.complete
222
+ artifacts:
223
+ - { path: "specs/changes/${change_id}/ux_design_brief.json", optional: false }
224
+ gate:
225
+ type: artifact-verify
226
+ on_fail: stop
227
+
228
+ - id: pencil_draft
229
+ label: "14 · Pencil draft"
230
+ catalog_ref: 14
231
+ required: true
232
+ atoms:
233
+ - id: H4a.pencil.draft
234
+ artifacts:
235
+ - { path: "specs/changes/${change_id}/pencil_output.pen", optional: false }
236
+ gate:
237
+ type: artifact-verify
238
+ on_fail: stop
239
+
240
+ - id: llm_design_review
241
+ label: "15 · LLM design review"
242
+ catalog_ref: 15
243
+ required: true
244
+ atoms:
245
+ - id: H5.visual.review
246
+ parallel_group: visual_review
247
+ parallel_weight: 2
248
+ - id: H6.visual.benchmark
249
+ parallel_group: visual_review
250
+ parallel_weight: 1
251
+ - id: H5b.visual.review.aggregate
252
+ artifacts:
253
+ - { path: "specs/changes/${change_id}/llm_design_review.json", optional: false }
254
+ gate:
255
+ type: deterministic
256
+ atom: H6b.visual.benchmark_validate
257
+ with: { mode: "advisory" }
258
+ on_fail: stop
259
+
260
+ - id: pencil_refine
261
+ label: "16 · Pencil refine"
262
+ catalog_ref: 16
263
+ required: true
264
+ atoms:
265
+ - id: H6c.visual.benchmark_repair_plan
266
+ - id: H4b.pencil.refine
267
+ artifacts:
268
+ - { path: "specs/changes/${change_id}/benchmark_repair_plan.json", optional: false }
269
+ - { path: "specs/changes/${change_id}/pencil_output.pen", optional: false }
270
+ gate:
271
+ type: artifact-verify
272
+ on_fail: stop
273
+
274
+ - id: llm_design_recheck
275
+ label: "17 · LLM design recheck"
276
+ catalog_ref: 17
277
+ required: true
278
+ atoms:
279
+ - id: H5.visual.review
280
+ parallel_group: visual_review
281
+ parallel_weight: 2
282
+ - id: H6.visual.benchmark
283
+ parallel_group: visual_review
284
+ parallel_weight: 1
285
+ - id: H5b.visual.review.aggregate
286
+ - id: H6d.visual.aesthetic_review
287
+ artifacts:
288
+ - { path: "specs/changes/${change_id}/llm_design_review.json", optional: false }
289
+ - { path: "specs/changes/${change_id}/aesthetic_review.json", optional: false }
290
+ gate:
291
+ type: deterministic
292
+ atom: H6b.visual.benchmark_validate
293
+ on_fail: stop
294
+
295
+ - id: design_accept
296
+ label: "18 · Design accept"
297
+ catalog_ref: 18
298
+ required: true
299
+ atoms:
300
+ - id: H4c.pencil.accept
301
+ artifacts:
302
+ - { path: "specs/changes/${change_id}/design_accept.json", optional: false }
303
+ - { path: "specs/changes/${change_id}/pencil_output.attestation.json", optional: false }
304
+ gate:
305
+ type: human
306
+ on_fail: stop
307
+
308
+ - id: plan
309
+ label: "19 · Plan"
310
+ catalog_ref: 19
311
+ required: true
312
+ atoms:
313
+ - id: D3a.phase_run.start
314
+ with: { phase: "plan" }
315
+ - id: I1b.team.run.structured
316
+ with: { phase: "plan" }
317
+ - id: E4.gate.payload_from_phase_run
318
+ - id: D3c.phase_run.complete
319
+ artifacts:
320
+ - { path: "specs/changes/${change_id}/plan.json", optional: false }
321
+ - { path: "specs/changes/${change_id}/plan.md", optional: false }
322
+ gate:
323
+ type: artifact-verify
324
+ on_fail: stop
325
+
326
+ - id: openissue
327
+ label: "20 · Open issue + branch"
328
+ catalog_ref: 20
329
+ required: true
330
+ atoms:
331
+ - id: A1.issue.create_or_patch
332
+ with:
333
+ repo: "${input.target_repo}"
334
+ title: "${input.issue_title}"
335
+ body: "${input.issue_body}"
336
+ change_type: "${input.change_type}"
337
+ - id: A2.branch.create_and_link
338
+ - id: B2b.status.write
339
+ with:
340
+ fields:
341
+ current_stage: "openissue"
342
+ status: "active"
343
+ gate:
344
+ type: deterministic
345
+ atom: E6.gate.local_precheck
346
+ with: { phase: "post-openissue" }
347
+ on_fail: stop
348
+
349
+ - id: set-in-progress
350
+ label: "21 · Set issue in progress"
351
+ catalog_ref: 21
352
+ required: true
353
+ atoms:
354
+ - id: A4.project.set_status
355
+ with: { target_status: "In Progress" }
356
+ - id: A3.repo.doctor
357
+ gate:
358
+ type: deterministic
359
+ atom: E6.gate.local_precheck
360
+ with: { phase: "pre-exec" }
361
+ on_fail: stop
362
+
363
+ - id: tdd-red
364
+ label: "22a · TDD red"
365
+ catalog_ref: 22
366
+ required: true
367
+ atoms:
368
+ - id: I6a.tdd.run
369
+ with: { phase: "red", test_command: "${input.tdd_red_command}", expect: "fail" }
370
+ - id: I6b.tdd.proof_validate
371
+ with: { phase: "red", tdd_mode: "${input.tdd_mode}" }
372
+ artifacts:
373
+ - { path: "specs/changes/${change_id}/tdd/red-0.json", optional: false }
374
+ gate:
375
+ type: artifact-verify
376
+ on_fail: stop
377
+
378
+ - id: execute
379
+ label: "23 · Execute"
380
+ catalog_ref: 23
381
+ required: true
382
+ atoms:
383
+ - id: I2.phase_run.dispatch
384
+ with: { phase: "execute" }
385
+ - id: I4.patch.challenge
386
+ artifacts:
387
+ - { path: "specs/changes/${change_id}/execute.json", optional: false }
388
+ gate:
389
+ type: artifact-verify
390
+ on_fail: stop
391
+
392
+ - id: tdd-green
393
+ label: "22b · TDD green + quality"
394
+ catalog_ref: 22
395
+ required: true
396
+ atoms:
397
+ - id: I6a.tdd.run
398
+ with: { phase: "green", test_command: "${input.tdd_green_command}", expect: "pass" }
399
+ - id: I6b.tdd.proof_validate
400
+ with: { phase: "green", tdd_mode: "${input.tdd_mode}" }
401
+ - id: I6c.tdd.quality_review
402
+ with: { tdd_mode: "${input.tdd_mode}" }
403
+ artifacts:
404
+ - { path: "specs/changes/${change_id}/tdd/green-0.json", optional: false }
405
+ - { path: "specs/changes/${change_id}/tdd/quality-0.json", optional: false }
406
+ gate:
407
+ type: artifact-verify
408
+ on_fail: stop
409
+
410
+ - id: review
411
+ label: "24 · Review"
412
+ catalog_ref: 24
413
+ required: true
414
+ atoms:
415
+ - id: I4.patch.challenge
416
+ with: { mode: "review" }
417
+ - id: J5.gate.evidence_collect
418
+ artifacts:
419
+ - { path: "specs/changes/${change_id}/review.json", optional: false }
420
+ gate:
421
+ type: llm-judge
422
+ on_fail: stop
423
+
424
+ - id: qa
425
+ label: "25 · QA"
426
+ catalog_ref: 25
427
+ required: true
428
+ atoms:
429
+ - id: J1.tests.run
430
+ - id: J4b.spec_delta.review
431
+ - id: H5.visual.review
432
+ with: { mode: "qa" }
433
+ - id: E5.artifact.verify
434
+ - id: B3.status.transition
435
+ with: { to_stage: "verify" }
436
+ - id: B2b.status.write
437
+ with:
438
+ fields:
439
+ verification_status: "passed"
440
+ design_aligned: "yes"
441
+ - id: J5.gate.evidence_collect
442
+ artifacts:
443
+ - { path: "specs/changes/${change_id}/qa_acceptance.json", optional: false }
444
+ gate:
445
+ type: artifact-verify
446
+ on_fail: stop
447
+
448
+ - id: gate_final
449
+ label: "27 · Final gate"
450
+ catalog_ref: 27
451
+ required: true
452
+ atoms:
453
+ - id: J5.gate.evidence_collect
454
+ - id: E3.gate.workbench
455
+ - id: K1.artifacts.complete_check
456
+ artifacts:
457
+ - { path: "specs/changes/${change_id}/gate_final.json", optional: false }
458
+ gate:
459
+ type: human
460
+ on_fail: stop
461
+
462
+ - id: archive
463
+ label: "28 · Archive"
464
+ catalog_ref: 27
465
+ required: true
466
+ atoms:
467
+ - id: K1.artifacts.complete_check
468
+ - id: K6.aha.merge
469
+ - id: K3.handoff.refresh
470
+ - id: K4.mem.lesson_persist
471
+ with: { lesson: "${input.lesson_summary}" }
472
+ - id: A5.archive.commit_push_close
473
+ with: { push: true, close_issue: true }
474
+ - id: A6.pr.create
475
+ gate:
476
+ type: deterministic
477
+ atom: E6.gate.local_precheck
478
+ with: { phase: "pre-archive" }
479
+ on_fail: stop
@@ -0,0 +1,233 @@
1
+ name: yolo
2
+ version: 1
3
+ description: >
4
+ Lightweight delivery workflow for backend, docs, infra, and small UI changes.
5
+ Does not require an HTTP server. GitHub CLI (gh) required.
6
+ All gate checks route through E6.gate.local_precheck (yolo_gate.py) — single source of truth.
7
+ track: lite
8
+ requires:
9
+ agentos_bin: true
10
+ agentos_http: false
11
+ gh: true
12
+ pencil: false
13
+
14
+ phases:
15
+ - id: change-init
16
+ label: "01 · Change init"
17
+ catalog_ref: 1
18
+ required: true
19
+ atoms:
20
+ - id: B1.change.scaffold
21
+ with: { change_type: "${input.change_type}", title: "${input.title}" }
22
+ - id: B2b.status.write
23
+ with:
24
+ fields:
25
+ current_stage: "change-init"
26
+ status: "draft"
27
+ archival_status: "not_ready"
28
+ - id: B7.change_mission.bind
29
+ with: { direction: "change_to_mission" }
30
+ artifacts:
31
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
32
+ - { path: "specs/changes/${change_id}/proposal.md", optional: true }
33
+ gate:
34
+ type: deterministic
35
+ atom: E6.gate.local_precheck
36
+ with: { phase: "pre-openissue" }
37
+ on_fail: stop
38
+
39
+ - id: brainstorm
40
+ label: "03 · Brainstorm"
41
+ catalog_ref: 3
42
+ required: true
43
+ atoms:
44
+ - id: B3.status.transition
45
+ with: { to_stage: "brainstorm" }
46
+ gate:
47
+ type: human
48
+ on_fail: stop
49
+
50
+ - id: design-check-lite
51
+ label: "09 · Design check (lite)"
52
+ catalog_ref: 9
53
+ required: false
54
+ condition:
55
+ input_field: change_type
56
+ equals: frontend
57
+ atoms:
58
+ - id: H1.design.lite_gate
59
+ with: { require_full_contract: false }
60
+ - id: B3.status.transition
61
+ with: { to_stage: "design-check" }
62
+ artifacts:
63
+ - { path: "DESIGN.md", optional: true }
64
+ gate:
65
+ type: deterministic
66
+ atom: H1.design.lite_gate
67
+ with: { require_full_contract: false }
68
+ on_fail: stop
69
+
70
+ - id: proposal
71
+ label: "06 · Proposal freeze"
72
+ catalog_ref: 6
73
+ required: true
74
+ atoms:
75
+ - id: B3.status.transition
76
+ with: { to_stage: "proposal-freeze" }
77
+ artifacts:
78
+ - { path: "specs/changes/${change_id}/proposal.md", optional: false }
79
+ gate:
80
+ type: artifact-verify
81
+ on_fail: stop
82
+
83
+ - id: proposal-consistency-check
84
+ label: "07 · Proposal consistency check"
85
+ catalog_ref: 7
86
+ required: true
87
+ atoms:
88
+ - id: J4a.spec_consistency.structural
89
+ - id: J4d.spec_clarify.gate
90
+ - id: B3.status.transition
91
+ with: { to_stage: "proposal-consistency-check" }
92
+ artifacts:
93
+ - { path: "specs/changes/${change_id}/spec_clarify.json", optional: true }
94
+ gate:
95
+ type: deterministic
96
+ atom: J4d.spec_clarify.gate
97
+ on_fail: stop
98
+
99
+ - id: plan
100
+ label: "18 · Plan"
101
+ catalog_ref: 18
102
+ required: true
103
+ atoms:
104
+ - id: B3.status.transition
105
+ with: { to_stage: "plan" }
106
+ artifacts:
107
+ - { path: "specs/changes/${change_id}/plan.md", optional: false }
108
+ - { path: "specs/changes/${change_id}/tasks.md", optional: false }
109
+ gate:
110
+ type: artifact-verify
111
+ on_fail: stop
112
+
113
+ - id: openissue
114
+ label: "19 · Open issue + branch"
115
+ catalog_ref: 19
116
+ required: true
117
+ atoms:
118
+ - id: A1.issue.create_or_patch
119
+ with: { repo: "owner/internal-tracker" }
120
+ - id: A2.branch.create_and_link
121
+ - id: B2b.status.write
122
+ with:
123
+ fields:
124
+ current_stage: "openissue"
125
+ status: "active"
126
+ artifacts:
127
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
128
+ gate:
129
+ type: deterministic
130
+ atom: E6.gate.local_precheck
131
+ with: { phase: "post-openissue" }
132
+ on_fail: stop
133
+
134
+ - id: set-in-progress
135
+ label: "20 · Set issue in progress"
136
+ catalog_ref: 20
137
+ required: true
138
+ atoms:
139
+ - id: A4.project.set_status
140
+ with: { target_status: "In Progress" }
141
+ - id: A3.repo.doctor
142
+ gate:
143
+ type: deterministic
144
+ atom: E6.gate.local_precheck
145
+ with: { phase: "pre-exec" }
146
+ on_fail: stop
147
+
148
+ - id: tdd-red
149
+ label: "21a · TDD red"
150
+ catalog_ref: 21
151
+ required: true
152
+ atoms:
153
+ - id: I6a.tdd.run
154
+ with: { phase: "red", test_command: "${input.tdd_red_command}", expect: "fail" }
155
+ - id: I6b.tdd.proof_validate
156
+ with: { phase: "red", tdd_mode: "${input.tdd_mode}" }
157
+ - id: B3.status.transition
158
+ with: { to_stage: "tdd" }
159
+ artifacts:
160
+ - { path: "specs/changes/${change_id}/tdd/red-0.json", optional: false }
161
+ gate:
162
+ type: artifact-verify
163
+ on_fail: stop
164
+
165
+ - id: execute
166
+ label: "22 · Execute"
167
+ catalog_ref: 22
168
+ required: true
169
+ atoms:
170
+ - id: B3.status.transition
171
+ with: { to_stage: "execute" }
172
+ gate:
173
+ type: human
174
+ on_fail: stop
175
+
176
+ - id: tdd-green
177
+ label: "21b · TDD green + quality"
178
+ catalog_ref: 21
179
+ required: true
180
+ atoms:
181
+ - id: I6a.tdd.run
182
+ with: { phase: "green", test_command: "${input.tdd_green_command}", expect: "pass" }
183
+ - id: I6b.tdd.proof_validate
184
+ with: { phase: "green", tdd_mode: "${input.tdd_mode}" }
185
+ - id: I6c.tdd.quality_review
186
+ with: { tdd_mode: "${input.tdd_mode}" }
187
+ artifacts:
188
+ - { path: "specs/changes/${change_id}/tdd/green-0.json", optional: false }
189
+ - { path: "specs/changes/${change_id}/tdd/quality-0.json", optional: false }
190
+ gate:
191
+ type: artifact-verify
192
+ on_fail: stop
193
+
194
+ - id: verify-consistency
195
+ label: "23 · Verify consistency"
196
+ catalog_ref: 23
197
+ required: true
198
+ atoms:
199
+ - id: J1.tests.run
200
+ - id: J4a.spec_consistency.structural
201
+ - id: J4b.spec_delta.review
202
+ - id: B3.status.transition
203
+ with: { to_stage: "verify" }
204
+ - id: B2b.status.write
205
+ with:
206
+ fields:
207
+ verification_status: "running"
208
+ gate:
209
+ type: deterministic
210
+ atom: J4a.spec_consistency.structural
211
+ on_fail: stop
212
+
213
+ - id: archive
214
+ label: "27 · Archive"
215
+ catalog_ref: 27
216
+ required: true
217
+ atoms:
218
+ - id: K1.artifacts.complete_check
219
+ - id: K6.aha.merge
220
+ - id: K3.handoff.refresh
221
+ - id: K4.mem.lesson_persist
222
+ with: { lesson: "${input.lesson_summary}" }
223
+ - id: A5.archive.commit_push_close
224
+ with: { push: true, close_issue: true }
225
+ - id: A6.pr.create
226
+ artifacts:
227
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
228
+ - { path: "specs/changes/${change_id}/spec_delta_review.json", optional: false }
229
+ gate:
230
+ type: deterministic
231
+ atom: E6.gate.local_precheck
232
+ with: { phase: "pre-archive" }
233
+ on_fail: stop